【发布时间】:2015-11-05 17:00:06
【问题描述】:
我是 python 新手,我一直在尝试理解类。
据我所知,当您创建一个类时,您必须在变量之前插入 self,以便在创建实例时将 self 替换为实例(这些成为实例属性)。 除了实例属性之外,还有类属性,它们定义在类的顶部,在任何方法之前。
但是,我遇到了这段代码:
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
为什么食物前面没有自我?它不是实例属性,但在我看来它也不是类属性。 我正在使用 python 2.X
【问题讨论】:
-
因为
food是方法的参数,而不是类/实例的属性;它被传入,例如Hero('Hercules').eat('apple')。该方法根本不引用self,因此可能是@staticmethod。 -
我太专注于学习类和实例属性,以至于我完全忘记了简单的函数参数。谢谢!
标签: python-2.7 class self instances