python学习DAY10(继承中的相关问题)

#示例
#组合
#父类
class SchoolMember(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
class Person(object):
    def __init__(self,job):
        self.job=job
#子类
class Teacher(SchoolMember):
    def __init__(self,name,age,sex,salary,course,Person_obj):  #Person_obj是为了下面多继承举例所用
        super(Teacher,self).__init__(name,age,sex)   #新式写法,但多继承采用这种方式的时候虽然可以避免多次执行__init__,但是会带来参数不正确的问题,因为多继承有顺序之分,对参数的顺序也有要求,但是我们没办法确定是哪个父类优先继承,因此参数的位置也就没办法确定下来
       #SchoolMember.__init__(self,name,age,sex)     #__init__只执行一次,如果多继承采用这种方法,会执行多次__init__,所以用super就可以避免此方法多继承带来的问题
        self.salary=salary
        self.course=course
        #如果想采用多继承,以上的两种方法都不能很好的解决问题,可以通过以下方法实现
        #如保留原继承SchoolMember类的情况下再继承Person类
        self.person=Person_obj  #注意子类构造函数的参数------>组合
        
        

 

posted @ 2019-08-16 10:37  LBC不认输  阅读(177)  评论(0编辑  收藏  举报