假设这门课......
Class feed(object):
def __init__ (self, food=0) :
self.food = food
def fill(self, water = 0):
self.food +=1
self.water +=1
我如何创建另一种方法来利用'water','fill'方法的属性,而不在构造函数方法中包含水
答案 0 :(得分:1)
声明self.food
或self.water
后,这些是整个对象的属性,而不仅仅是声明它们的方法。只要你解析{{1}对于类的新方法,它可以通过引用self
,self.food
等来访问对象的所有属性。例如:
self.water
但是,正如@jonrsharpe在注释中指出的那样,确保运行方法的顺序不会导致尝试引用尚未声明的属性的方法。优良作法是在类的class feed(object):
# other functions
def new_method(self):
#This can now reference other object attributes
方法中定义所有属性。目前,在调用__init__
之前,您不会声明self.water
,这会因为在分配之前引用属性self.water += 1
而引发AttributeError
。这是一种阻止这种情况的方法:
self.water