• 一些关于Python Class和C++ Class 的不同点


    写在前面

    本文将对Python Class的用法进行讲解,且重点将体现Python Class 与C++ Class不同的地方。

    类的定义

    和C++类似,Python采用了Class xxx的定义方式,不过首字母需要大写(采用大驼峰命名法命名)

    class PeopleBase:
        print("test")
        gender = ""
    
        def __init__(self, name, no):
            self.name = name
            self.no = no
    
        def print(self):
            self.out = "already out"
            print("name = ", self.name)
            print("no = ", self.no)
    

    与c++相比,它有一些不同的地方

    构造函数

    在c++中,构造函数的样式为 \(ClassName(argv1,argv2)\)

    但在Python中,构造函数的形态为\(\_\_init\_\_(self, argv1, argv2……)\)

    对于一个类,只能有一个init,且init中的第一个参数必须为self

    变量定义

    在c++中,变量定义需要在class中进行,不可以在成员函数中进行

    但是在python中,既可以直接定义(如上文的gender),也可以在函数中定义(如init中,或者是print中),甚至还可以在执行的过程中,直接进行定义

    创建实例对象

    由于Python的变量类型是基于所赋的值的类型

    因此我们要先定义出一个类型为ClassName的类型,再进行赋值

    比如下面的代码

    a = PeopleBase("Alice", 123)
    

    访问属性

    和c++一样的访问逻辑

    不过,我们可以通过访问属性,给类添加属性

    a = PeopleBase("Alice", 123)
    a.age = 12
    a.print()
    print(a.age)
    

    类的继承

    和c++一样,Python Class支持类继承

    类继承的语法是这样的:

    class Student(PeopleBase):
        grade = ""
    
        def __init__(self, grade, name, no):
            self.grade = grade
            super(Student, self).__init__(name, no)
    
        def print(self):
            print("grade = ", self.grade)
            super(Student,self).print()
    

    其中,定义语句为

    class Student(PeopleBase):
    

    PeopleBase为基类,Student为派生类

    在派生类中调用其基类的方法为super(BaseClassName,self).func()

  • 相关阅读:
    微软紧急安全公告:当心SQL攻击爆发
    婴儿
    感冒了
    System.IO.FileAttributes
    mssql数据库,无法用语句实现“强制还原”功能
    好大的风
    无聊的游戏
    JZOJ 4276【NOIP2015模拟10.28A组】递推
    JZOJ 4289.Mancity
    单词检索(search)
  • 原文地址:https://www.cnblogs.com/alphainf/p/16901883.html
Copyright © 2020-2023  润新知