python中的父__unicode__

时间:2013-02-18 09:53:17

标签: python inheritance

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

2 个答案:

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