【发布时间】:2015-12-31 18:38:58
【问题描述】:
我在How to use 'super' in python 上看到过各种示例,但在所有这些示例中,都没有将参数传递给子类的 init 方法。请考虑以下示例。
这是基类:
class Animal(object):
def __init__(self, genus):
self.genus = genus
现在这里不使用 super:
class Dog(Animal):
def __init__(self, genus):
Animal.__init__(self, genus)
x = Dog('Canis')
print x.genus # Successfully prints "Canis"
现在当我使用 super 代替时:
class Dog(Animal):
def __init__(self, genus):
super(Animal, self).__init__(genus)
x = Dog('Canis')
print x.genus
我收到以下错误:
TypeError: object.__init__() takes no parameters
那么如果 object.init() 不带参数,我如何在实例化该子类时设置该特定动物的特定属?我是否必须像这样显式分配变量:
class Dog(Animal):
def __init__(self, genus):
super(Animal, self).__init__()
self.genus = genus
【问题讨论】:
-
super的重点是你总是使用 current 类。
标签: python inheritance super