假设我有一个名为Animal的类和一个名为Dog的子类。如何从Dog类中访问Animal的 unicode 定义?
class Animal:
def __unicode__(self):
return 'animal'
class Dog(Animal):
def __unicode__(self):
return 'this %s is a dog' % (I want to get the Animal's __unicode__ here)
答案 0 :(得分:4)
由于您在Python 2中实现了旧式类,因此只能通过其限定名称访问基类的方法:
class Animal:
def __unicode__(self):
return 'animal'
class Dog(Animal):
def __unicode__(self):
return 'this %s is a dog' % Animal.__unicode__(self)
但是,如果您修改基类使其变为new-style class,那么您可以使用super():
class Animal(object):
def __unicode__(self):
return 'animal'
class Dog(Animal):
def __unicode__(self):
return 'this %s is a dog' % super(Dog, self).__unicode__()
请注意,所有类都是Python 3中的新式类,因此在运行该版本时始终可以使用super()
。
答案 1 :(得分:0)
您可以通过以下几种方式引用父方法:
class Dog(Animal):
def __unicode__(self):
return 'this %s is a dog' % Animal.__unicode__(self)
class Dog(Animal):
def __unicode__(self):
return 'this %s is a dog' % super(Dog, self).__unicode__()
注意:为了使用super,父类必须是新的样式类。如果与问题中定义的旧样式类一起使用,第二种方法将失败。