修复
写下:class Dog(Animal):
def __init__(self, genus):
super(Dog, self).__init__(genus)
所以不是:
^{pr2}$
使用:super(Dog, self).__init__(genus)
想一想:什么是Dog的超类?Animal将是这个案例中这个问题的正确答案。但如果你使用多重继承,情况就不同了。在
Python3号进行救援
如果使用Python 3,所有事情都会变得更简单:class Dog(Animal):
def __init__(self, genus):
super().__init__(genus)
有效。更不用说犯错误了。在
Python3与Python Future在Python2中的优势
如果需要使用python2,请考虑Python-Future。在Python 2上可以执行以下操作:from builtins import object, super
class Animal(object):
def __init__(self, genus):
self.genus = genus
class Dog(Animal):
def __init__(self, genus):
super().__init__(genus)
x = Dog('Canis')
print(x.genus)
这个builtins模块来自pythonfuture。使用它,可以在python2中编写python3(至少对于所有重要的更改)。在