super()指的是父类,Python3中可以不需要带参数
不要这么写:super().__init__(self)
当调用一个类的时候,默认就会有self参数,不需要手动去加,即使是手动调用父类的__init__函数,super.__init__()即可
__init__ #构造函数,在生成对象时调用 __del__ #析构函数,释放对象时使用 __repr__ #打印,转换 __setitem__ #按照索引赋值 __getitem__ #按照索引获取值 __len__ #获得长度 __cmp__ #比较运算 __call__ #调用 __add__ #加运算 __sub__ #减运算 __mul__ #乘运算 __div__ #除运算 __mod__ #求余运算 __pow__ #幂
以双下划线开头的变量是私有变量,只能类内部访问
注意:self和cls都不是python保留关键字,用这两个变量名只是约定俗成(对应函数的第一个参数自动成为self或者cls)
使用修饰器@staticmethod
class Person: #构造函数 def __init__(self): print('Construct A Person') #析构函数 def __del__(self): print('Destroy A Person') #普通函数都需要self参数 相当于this指针 def Say(self): print('Person Say') #静态函数用一个修饰器修饰 不需要self参数 @staticmethod def About(): print('About Person Class') class Student(Person): def __init__(self,name:str): #手动构造父类 super().__init__() #以双下划线开头的变量是私有变量 只能类内部访问 self.__name=name print('Construct A Student') def __del__(self): print('Destroy A Student') #手动析构父类 return super().__del__() #覆盖了一个普通函数直接就相当于重写了虚函数 #Py没有指针引用的概念 #直接就是根据对象的类型来确定调用哪个版本的函数的 def Say(self): print('My Name is',self.__name) #如果需要的话 调用父类的函数 #return super().Say() #实现多态 def CallSay(SomePerson): SomePerson.Say() def main(): person=Person() #传入参数给构造函数 student=Student('Zhonghui') #静态函数 Person.About() #不能访问私有变量 #print(student.__name) CallSay(person) CallSay(student) if __name__=='__main__': main() #cls和self关键字类似 但是很鸡肋(?)