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__()

すべてのクラスはPython3の新しいスタイルのクラスであるため、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を使用するには、親クラスが新しいスタイルクラスである必要があります。2番目のメソッドは、質問で定義されているような古いスタイルのクラスで使用すると失敗します。

于 2013-02-18T09:56:27.083 に答える