一些关于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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章