【发布时间】:2015-03-17 21:39:55
【问题描述】:
python 新手,目前正在学习类和 OOP。我正在尝试运行以下简单的代码,但无法弄清楚为什么会出现错误。请看下面的代码:
class Animal(object):
fur = True
def real_animal(self):
if fur:
print "Real animal"
else:
print "Fake animal"
class Dog(Animal):
fur = True
def __init__(self, name):
self.name = name
rover = Dog("Rover")
rover.real_animal()
我收到一条错误消息,指出未定义毛皮。据我了解,类可以从类继承。因此,由于 Rover 是 Dog 类的实例,它是 Animal 类。我不应该能够在 Rover 上运行基类 Animal 的功能吗?我基本上想说狗有毛皮,因此是真正的动物。
感谢大家帮助新手。
【问题讨论】:
-
你的缩进和上面的一样吗?因为这会给你带来麻烦......类中的所有内容都需要在类定义行下缩进。
-
@Ffisegydd 同时将
fur更改为self.fur内real_animal()将允许代码运行,这是一个不完整的修复——除非你打算将fur设为实例变量(您似乎应该这样做),您不妨将其引用为Animal.fur以避免混淆。还有一个问题是关于随机的has_fur目前什么都不做。 -
@JuniorCompressor - 你怎么知道那是 OP 的代码 - 也许他搞砸了他的缩进
-
@Mark 因为他没有解析错误