假設這個類...Python的 - 如何在另一種方法使用一種方法的屬性
Class feed(object):
def __init__ (self, food=0) :
self.food = food
def fill(self, water = 0):
self.food +=1
self.water +=1
如何創建另一種方法,將利用「水」,「補」方法的屬性不包括在類的構造方法
假設這個類...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
,這些都是整個對象的屬性水,不只是方法他們在聲明的。只要你解析self
一類的新方法它可以訪問所有的屬性通過引用對象self.food
,self.water
等。如:
class feed(object):
# other functions
def new_method(self):
#This can now reference other object attributes
然而,正如評論所指出的@jonrsharpe,確保在方法運行的順序不會導致方法嘗試引用尚未聲明的屬性。定義類的__init__
方法中的所有屬性是一種很好的做法。目前,您在致電self.water += 1
之前未聲明self.water
,由於self.water
屬性在賦值之前被引用,因此將引發AttributeError
。這是一種方法來阻止這種情況:
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
你剛剛*嘗試做那*嗎?如果你有方法使用'__init__'中沒有定義的屬性,如果它們按照你期望的順序運行,會發生什麼?另外,請注意它是'class'(Python區分大小寫),你應該閱讀https://www.python.org/dev/peps/pep-0008/ – jonrsharpe
這個問題對我來說完全不清楚。 – timgeb
@timegeb就像這樣簡單...創建另一種方法並找到一種方法在方法中包含'water'(方法'fill'屬性)屬性 – Qudus