【问题标题】:Very simple; beginner class很简单;初级班
【发布时间】: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.furreal_animal() 将允许代码运行,这是一个不完整的修复——除非你打算将fur 设为实例变量(您似乎应该这样做),您不妨将其引用为 Animal.fur 以避免混淆。还有一个问题是关于随机的has_fur 目前什么都不做。
  • @JuniorCompressor - 你怎么知道那是 OP 的代码 - 也许他搞砸了他的缩进
  • @Mark 因为他没有解析错误

标签: python class


【解决方案1】:

你至少有两个错误:

  • 需要将 fur 变量称为self.fur,因为它不是局部变量而是实例/类上的变量

  • Dog 类中,您调用变量has_fur,但在父类中它仅称为fur

【讨论】:

    猜你喜欢
    • 2020-12-26
    • 1970-01-01
    • 2014-09-23
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多