Python基础语法之——继承

xiaoxiao2021-02-28  68

Python中继承的特点

继承中父类的构造函数不会被自动调用,其需要子类在其自己的构造函数中亲自调用。 #Filenaame: BaseModel.py # 注意模块名最好和类名取不一样的名字 class BaseClass: def __init__(self, name, age): self.name = name self.age = age print('baseclass is inited') def speak(self, sth): print('baseclass is speak :%s'%sth) if __name__ == '__main__': b = BaseClass('yuanCruise',23) b.speak('PG one') 在调用父类的方法时,需要加上父类的类名前缀,且需要带上self参数变量。 import BaseModel # 该处调用时需要利用 【文件名.类名】 class SubClass(BaseModel.BaseClass): def __init__(self, name, age, salary): #调用父类的构造函数,如上述所说的注意点 BaseModel.BaseClass.__init__(self, name, age) self.salary = salary print('SubClass is inited and the salary:%s'%self.salary) def talk(self, sth): print('In SubClass %s is saying %s'%(self.name, sth)) # 调用父类的方法,如上述所说的注意点 BaseModel.BaseClass.speak(self, sth) if __name__ == '__main__': s = SubClass('yuanCruise', 23, 10) s.talk('JYM') 如果子类中没有定义构造函数,则会自动继承父类的构造函数中的属性 import BaseModel # 该处调用时需要利用 【文件名.类名】 class SubClass(BaseModel.BaseClass): #def __init__(self, name, age, salary): #调用父类的构造函数,如上述所说的注意点 #BaseModel.BaseClass.__init__(self, name, age) #self.salary = salary #print('SubClass is inited and the salary:%s'%self.salary) def talk(self, sth): print('In SubClass %s is saying%s, his age is: %s'%(self.name, sth, self.age)) # 调用父类的方法,如上述所说的注意点 BaseModel.BaseClass.speak(self, sth) if __name__ == '__main__': #s = SubClass('yuanCruise', 23, 10) # 但构造函数的参数一定要输入正确 s = SubClass('yuanCruise', 23) s.talk('JYM') COMMEND: Traceback (most recent call last): File "C:/Software/pycharm/myPython35_code/daily_code/item1/SubModel.py", line 14, in <module> s = SubClass('yuanCruise', 23, 10) TypeError: __init__() takes 3 positional arguments but 4 were given 以子类的名义调用函数方法,则调用的过程中先在子类中寻找,若没找到则再去父类中寻找该对应的方法 import BaseModel # 该处调用时需要利用 【文件名.类名】 class SubClass(BaseModel.BaseClass): #def __init__(self, name, age, salary): #调用父类的构造函数,如上述所说的注意点 #BaseModel.BaseClass.__init__(self, name, age) #self.salary = salary #print('SubClass is inited and the salary:%s'%self.salary) def talk(self, sth): print('In SubClass %s is saying%s, his age is: %s'%(self.name, sth, self.age)) # 调用父类的方法,如上述所说的注意点 BaseModel.BaseClass.speak(self, sth) if __name__ == '__main__': #s = SubClass('yuanCruise', 23, 10) s = SubClass('yuanCruise', 23) s.talk('JYM') # 该方法虽然以子类的名义调用,但在子类中未找到该方法所以从父类中寻找并调用 s.speak('PG one') COMMEND: baseclass is inited In SubClass yuanCruise is sayingJYM, his age is: 23 baseclass is speak :JYM baseclass is speak :PG one
转载请注明原文地址: https://www.6miu.com/read-51297.html

最新回复(0)