1,python类的继承
class A(object): name =‘eason‘ age = ‘22‘ def __init__(self): print ‘我是A的构造函数!!!‘ def getname(self): return self.name def getage(self): return self.age class B(object): name = ‘linsir‘ age=‘30‘ def __init__(self): print ‘我是B的构造函数!!!‘ def getname(self): return self.name def getage(self): return self.age class C(A,B): def __init__(self): print ‘我是我自己的构造函数‘ #调用父类的构造函数 super(C,self).__init__() name = ‘testsir‘ age = ‘25‘ person1 = C() print person1.getname() print person1.getage() 运行结果: 我是我自己的构造函数 我是A的构造函数!!! testsir 25
子类如果没有构造函数,默认会使用父类的构造函数,如果继承多个父类,看哪个父类写在前面就调用哪个父类的构造。
C继承了A和B ,所以A和B为C的父类或者说是基类。
A和B为C的子类,或者说是AB的派生类。
调用父类的第一个方法:可以用super函数。super(son,self).__init__()
调用父类的第二个方法:父类.方法名(self),不建议使用,因为如果有多个调用父类的方法的代码,如果类的名称一旦发生变化,则意味这后面调用父类的方法的代码都得变。
2,python方法重写
class father(object): def __init__(self): self.name = ‘tom‘ print ‘father‘ def func(self): print ‘father.func‘ def bad(self): print ‘father抽烟喝酒 ‘ class son(father): def __init__(self): super(son,self).__init__() print ‘son‘ def sonc(self): print ‘son.sonc‘ #重写bad函数,不在使用父类的函数。如果想调用父类的函数,可以用super执行父类的方法。 def bad(self): #调用 # super(son, self).bad() # father.bad(self) print ‘son赌博‘ son1 = son() son1.sonc() son1.bad() 运行结果: father son son.sonc son赌博
son1 = son()实例化一个对象出来,调用bad方法,由于子类已经有bad方法,故无需重父类调用,即达到父类方法的重写功能。