这可能是很明显的事情,但我尝试了所有我能想到的,在这里看了这么多,我仍然坚持。
我一直在努力完成LearnpythotherHardway课程,目前正在学习第42章,我一直在那里玩代码,并添加了一些东西:
http://learnpythonthehardway.org/book/ex42.html
我为“Dog”和“Cat”添加了一些要打印的功能和内容,当我只使用狗的打印命令(经常吠叫和摇尾巴)运行它时,它工作正常,当我尝试使用猫名的打印命令时,它工作正常,但当我为“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, in <module>
print "%s drinks milk: %s" % (satan.getName(), satan.dri
AttributeError: 'Cat' object has no attribute 'drinksMilk'
我加了“饮料牛奶”和我给狗做的完全一样,所以我不明白为什么它不起作用,我试着把它改名为其他东西,但那不起作用。
这是我的代码:
## 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'
错误,我无法理解为什么。。。
只是不了解那种方法。你可以看到它工作正常here
正确代码:
相关问题 更多 >
编程相关推荐