旧类以调用未绑定的超类构造方法
class OldDog:
def __init__(self):
print 'I am a old dog !'
self.__hungry = True
def eat(self):
if self.__hungry:
print 'I eat it !'
self.__hungry = False
else:
print 'No thanks!'
class OldWolf(OldDog):
def __init__(self):
OldDog.__init__(self)
print 'Not only a dog but a wolf !'
Oldwolf类如果不写构造函数,其实会自动继承父类的所有属性和方法。但是如果自己类里有写了构造函数,(戴佳告诉我python里哪怕在同一个类里也没有重载这一说),这里子类覆盖了父类的构造方法,也就没有‘__hungry’这个东西了。所以旧类采用的是在子类的构造函数里以自身作为参数调用父类的__init__。
old_dog = OldDog()
old_dog.eat()
old_dog.eat()
old_wolf = OldWolf()
old_wolf.eat()
old_wolf.eat()
I am a old dog !
I eat it !
No thanks!
I am a old do