属性没有自身(但它也不是 class 属性)

attribute has no self (but it is not a class attribute either)

我是 python 的新手,我一直在努力理解 classes。

据我所知,当您创建一个 class 时,您必须在变量之前插入 self,以便在创建实例时将 self 替换为实例(这些成为实例属性)。 除了实例属性外,还有 class 属性,它们定义在 class 的顶部,在任何方法之前。

但是,我遇到了这段代码:

class Hero:
    def __init__(self, name):
        self.name = name
        self.health = 100

    def eat(self, food):
        if food == 'apple':
            health += 20
        elif food == "chocolate":
            health -= 10

为什么食物之前没有自我?它不是实例属性,但在我看来它也不是 class 属性。 我正在使用 python 2.X

food 不是指 class 对象的属性(应该是 self.food),而是指给 eat 的参数。

class Hero:
    def __init__(self, name):
        self.name = name
        self.health = 100

    def eat(self, food):
        if food == 'apple':
            self.health += 20 # <-------- use self. always if you want to use an attribute of the instance inside a method
        elif food == "chocolate":
            self.health -= 10