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
指的是所有方法共享的“实例”。@Qudusfill
没有属性water
,您的feed
的实例有(或者没有,如果fill
从未被调用过),你可能会犯错误