#在子类派生的新方法中重用父类功能的两种方法 # 方式一:与继承无关 # 指名道姓法,直接用类名.函数名的方法 # 注意只能当普通函数用,需要把所有的值传入 class OldboyPeople: school='oldboy' def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex class OldboyStudent(OldboyPeople): def __init__(self,name,age,sex,stu_id): OldboyPeople.__init__(self,name,age,sex)#指明道姓法 self.stu_id=stu_id def choose_course(self): print('%s is choosing course'%self.name) # 方式二:严格来继承属性查找关系 # super()会得到一个特殊的对象,该对象就是专门用来访问父类中的属性的(按照继承的关系 ) # # super().__init__(不用为self传值) # # 注意:super的完整的用法是super(自己的类名,self),在python2中要写完整,而在 # python3则不用,直接用super() class OldboyPeople: school='oldboy' def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex class OldboyStudent(OldboyPeople): def __init__(self,name,age,sex,stu_id): super(OldboyStudent,self).__init__(name,age,sex) self.stu_id=stu_id def choose_course(self): print('%s is choosing course'%self.name) stu1=OldboyStudent('林',18,'male',3) print(stu1.__dict__) print(OldboyStudent.mro()) class A: def f1(self): print('a.f1') class B: def f2(self): super().f1()#按C的查找顺序找 print('b.f2') class C(B,A): pass obj=C() print(C.mro()) obj.f2() #C->B->A->object
python子类重用父类的两种方式
猜你喜欢
转载自blog.csdn.net/qq_35540539/article/details/80836481
今日推荐
周排行