2017-01-28 6 views
0

コードに示すように、DogPetのサブクラスです。 Dogのインスタンスを作成すると、speciesを取得できません。ちなみに、私はthis articleに従っていますか?私のpythonクラスがうまくいかないのはなぜですか?

class Pet(object): 

    def __init__(self, name, species): 
     self.name = name 
     self.species = species 

    def getName(self): 
     return self.name 

    def getSpecies(self): 
     return self.species 

    def __str__(self): 
     return "{0} is a {1}".format(self.name, self.species) 


class Dog(Pet): 

    def __int__(self, name, chaseCats): 
     Pet.__init__(self, name, "dog") 
     self.chaseCats = chaseCats 

    def getChaseCats(self): 
     return self.chaseCats 

インスタンスを作成します。

mister_dog = Dog("Huang ~", True) 
print mister_dog.getSpecies() 

それが返されます:Trueではなくdogを。

答えて

4

これはタイプミスです。サブクラスDogの最初のメソッドは、__init__ではなく、__int__と命名されています。したがって、初期化子はサブクラスで定義されておらず、基本クラスの__init__を直接呼び出しているだけです。

ところで、バインドされていない方法ではなく、super()メソッドを使用することもできます。

+0

ありがとうございます、私は約30分をチェックしました... – buzhidao

関連する問題