#示例
#组合
#父类
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 #注意子类构造函数的参数------>组合