1

假设我有一个名为 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)
4

2 回答 2

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)

但是,如果你修改你的基类,使它成为一个新式类,那么你可以使用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()在运行该版本时始终可以使用。

于 2013-02-18T10:02:13.173 回答
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 父类必须是一个新的样式类。如果与问题中定义的旧样式类一起使用,第二种方法将失败。

于 2013-02-18T09:56:27.083 回答