这可能是很明显的事情,但是我尝试了所有我能想到的事情,并在这里进行了很多研究,而我仍然陷入困境。
我一直在学习LearnPythonTheHardWay课程,目前在第42章,我一直在那里学习代码并添加一些内容:
http://learnpythonthehardway.org/book/ex42.html
我添加了一些要为“狗”和“猫”打印的功能和东西,当我仅使用狗的打印命令(barks_often和wags_tail)运行它时,它运行正常,当我尝试使用猫的打印命令进行打印时名称很好,但是只要我为'drinks_milk'添加一个,就会出现此错误:
PS C:\Users\David\python\lpthw> python ex42_more.py Rover is a Dog Rover barks often: True Rover wags his tail: True Satan is a Cat Traceback (most recent call last): File "ex42_more.py", line 123, inprint "%s drinks milk: %s" % (satan.getName(), satan.dri AttributeError: 'Cat' object has no attribute 'drinksMilk'
我添加'drinks_milk'的操作与我对狗所做的操作完全相同,所以我不明白为什么它不起作用,我尝试将其重命名为其他东西,但是没有起作用。
这是我的代码:
## Animal is-a object (yes, sort of confusing) look at the extra credit class Animal(object): def __init__(self, name, species): self.name = name self.species = species def getName(self): return self.name def getSpecies(self): return self.species ## class name Dog is-a animal class Dog(Animal): def __init__(self, name, barks_often, wags_tail): Animal.__init__(self, name, "Dog") self.barks_often = barks_often self.wags_tail = wags_tail def barksOften(self): return self.barks_often def wagsTail(self): return self.wags_tail ## class Cat is-a animal class Cat(Animal): def __init__(self, name, drinks_milk): Animal.__init__(self, name, "Cat") self.drinks_milk = drinks_milk def drinksMilk(self): return self.drinks_milk ## rover is-a Dog rover = Dog("Rover", True, True) ## satan is-a Cat satan = Cat("Satan", True) print "%s is a %s" % (rover.getName(), rover.getSpecies()) print "%s barks often: %s" % (rover.getName(), rover.barksOften()) print "%s wags his tail: %s" % (rover.getName(), rover.wagsTail()) print "%s is a %s" % (satan.getName(), satan.getSpecies()) print "%s drinks milk: %s" % (satan.getName(), satan.drinksMilk())
我感觉这是一个缩进问题,您会发现缩进的问题def drinksMilk(self):
比其他缩进的要多,但这是因为当我将它放在正常位置并与上面的其他def一致时,我运行了它给出的代码我的'IndentationError: unindent does not match any outer indentation level'
错误,我不知道为什么...