属性没有自身(但它也不是 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
我是 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