2016-02-14 115 views
-2

假設這個類...Python的 - 如何在另一種方法使用一種方法的屬性

Class feed(object): 

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

如何創建另一種方法,將利用「水」,「補」方法的屬性不包括在類的構造方法

+0

你剛剛*嘗試做那*嗎?如果你有方法使用'__init__'中沒有定義的屬性,如果它們按照你期望的順序運行,會發生什麼?另外,請注意它是'class'(Python區分大小寫),你應該閱讀https://www.python.org/dev/peps/pep-0008/ – jonrsharpe

+0

這個問題對我來說完全不清楚。 – timgeb

+0

@timegeb就像這樣簡單...創建另一種方法並找到一種方法在方法中包含'water'(方法'fill'屬性)屬性 – Qudus

回答

1

一旦你聲明self.foodself.water,這些都是整個對象的屬性水,不只是方法他們在聲明的。只要你解析self一類的新方法它可以訪問所有的屬性通過引用對象self.foodself.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 
+0

嗯,你*可以*趕上一個AttributeError – timgeb

+0

@timgeb並不意味着你應該... –

+0

@R。穆雷謝謝你 – Qudus

相關問題