当我没有在__init__中指定属性时,为什么会出现TypeError Missing属性?

时间:2017-10-28 23:20:56

标签: python inheritance subclass superclass

我很困惑为什么我会收到这个错误,因为我开始使用“从Python开始,第3版”这本书表明我应该能够做到这一点。我正在做同样的事情,这本书只是命名我的类不同。

这是我的班级定义:

 #parent class
    class Animal:
        def __init__(self,animalType):

            self.setAnimalType(animalType)
            self.setAge(0)
            self.setColor('')

    #mutator functions
    def setAnimalType(self,animalType):
        self.__animalType = animalType

    def setAge(self,age):
        self.__age = age

    def setColor(self,color):
       self.__color = color


    #accessor functions
    def getAnimalType(self):
        return self.__animalType

    def getAge(self):
        return self.__age

    def getColor(self):
        return self.__color

    #stub function
    def makeNoise(self):
        print("Argh")

    #state function
    def __str__(self):
       return 'I am a {} {} being of age {}.\n'.format(self.getColor(),self.getAnimalType(),self.getAge())


#child classes
class Mouse(Animal):
    def __intit__(self):
        Animal.__init__(self,'Mouse')

    def makeNoise(self):
        print("squeak")

当我执行以下操作时:

#import statements
import animals

# functions
def main():
    mouse1 = animals.Mouse()

    mouse1.setAge(5)
    mouse1.setColor('white')
    print(mouse1,mouse1.makeNoise())


# Main Program
main()

我收到错误:

TypeError: __init__() missing 1 required positional argument: 'animalType'

0 个答案:

没有答案