Python—如何在另一个方法中使用一个方法的属性

Python—如何在另一个方法中使用一个方法的属性,python,Python,假设这个类 Class feed(object): def __init__ (self, food=0) : self.food = food def fill(self, water = 0): self.food +=1 self.water +=1 我如何创建另一个方法来使用“水”,即“填充”方法的属性,而不在构造函数方法中包含水一旦您声明了self.food或self.water,这些都是整个对象的属性,而不仅仅是在

假设这个类

Class feed(object):

    def __init__ (self, food=0) :
        self.food = food
    def fill(self, water = 0): 
        self.food +=1
        self.water +=1

我如何创建另一个方法来使用“水”,即“填充”方法的属性,而不在构造函数方法中包含水

一旦您声明了
self.food
self.water
,这些都是整个对象的属性,而不仅仅是在其中声明的方法。只要将
self
解析为类的新方法,它就可以通过引用
self.food
self.water
等来访问对象的所有属性。例如:

class feed(object):

    # other functions

    def new_method(self):
        #This can now reference other object attributes
但是,正如@jornsharpe在注释中指出的,请确保方法的运行顺序不会导致方法尝试引用尚未声明的属性。在类的
\uuuu init\uuuu
方法中定义所有属性是一种很好的做法。当前,在调用
self.water+=1
之前,您没有声明
self.water
,这将引发
AttributeError
,因为在分配之前引用了属性
self.water
。有一种方法可以阻止这种情况:

class feed(object):

    def __init__ (self, food = 0, water = 0) :
        self.food = food
        self.water = water

    def fill(self): 
        self.food += 1
        self.water += 1

你刚才试过吗?如果您有使用未在
\uuuu init\uuuu
中定义的属性的方法,那么如果它们的运行顺序与您期望的不同呢?另外,请注意它是
(Python区分大小写),您应该阅读我完全不清楚的问题。@timegeb就这么简单。。。创建另一个方法并找到在方法中包含“water”(方法“fill”的属性)属性的方法
self
指的是所有方法共享的“实例”。@Qudus
fill
没有属性
water
,您的
feed
的实例有(或者没有,如果
fill
从未被调用过),你可能会犯错误