【问题标题】:attribute has no self (but it is not a class attribute either)属性没有自我(但它也不是类属性)
【发布时间】: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

【问题讨论】:

标签: python-2.7 class self instances


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-26
      • 2016-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2011-08-27
      • 1970-01-01
      相关资源
      最近更新 更多