当我没有在初始化中指定属性时,为什么会得到TypeError Missing属性__

2024-09-27 09:32:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我很困惑为什么会出现这样的错误,因为我即将出版的《从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'

Tags: selfagereturninitdeffunctionsclasscolor

热门问题