2017-08-28 65 views
0

我編程的藏漢類的定義與backthought的時候你 每次設置的值使用類變量,你總是可以通過定義召回總量的Python - 類 - 定義

class Hand(): 

    def __init__(self, Hand=0): 
     self.Hand = Hand 

    def getHand(self, neue_Hand): 
     self.Hand = neue_Hand 

    def set_hand(self): 
     return self.Hand 

c = Hand() 

def Aufruf(): 
    Total = 0 
    Total += c.getHand(0) 
    return Total 


c.getHand(12) 

Aufruf() 

它每次改變該值,但不會按照它應該積累的值。

+1

你應該從現在開始習慣使用英文名字。這對於那些瞭解和幫助你的人來說會更容易。 –

+0

您是否在代碼中正確縮進?在你在這裏發佈的代碼中,縮進是關閉的。你需要方法的標題和類DEF – bendl

+1

後縮進'c.getHand'返回無 - 你不能'+ = None'到'Total'。 –

回答

2

你已經在你的getter和setter混合起來的功能。 getter應該返回變量,setter應該設置該值。

class Hand(): 

    def __init__(self,Hand=0): 
     self.Hand = Hand 

    def getHand(self): 
     return self.Hand 

    def set_hand(self, neue_Hand): 
     self.Hand = neue_Hand 

    def increment_hand(self, neue_Hand_incremenet): 
     self.Hand += neue_Hand_incremenet 

c = Hand(10) 
c.getHand() 
>> 10 
c.set_hand(20) 
c.getHand() 
>> 20  

def Aufruf(): 
    Total = 0 
    Total += c.getHand() 
    return Total 

Aufruf() 
>> 20 
c.increment_hand(10) 
Aufruf() 
>> 30 

另外,作爲一個側面說明: 如果你仔細觀察,你會發現你的方法Aufruf實際上是getHand()方法完全相同的副本(邏輯)。當你實例化的代碼的方法塊內的變量total = 0,該值將始終被設置爲0時,調用該方法,這意味着從c.getHand()值將始終僅僅是因爲所返回

+0

我覺得我沒有完全表達我自己,我想要做的是:當我通過c.set_hand值多次更改()這個值將被保存並添加uppon在Aufruf以前的值。比如我設置c.set_hand(10)和後(20),我應該從Aufruf()得到= 30 – Roman

+0

我會添加一些修改代碼,但它西港島線會比當前設置略有不同。 getters和setter的概念應該和我的例子一樣。我現在要添加一些新的代碼 – AK47

+0

@Roman降級我的答案?你接受的答案不會爲你的代碼工作,如果你只需要添加自己的新方法get_hand_bigger(),並且仍然在Aufruf – AK47

0

你的類方法getHand沒有價值返回任何值,但它被這樣調用。試試這個:

def getHand(self, neue_Hand): 
    self.Hand = neue_Hand 
    return self.Hand 
+0

您get_hand()方法中使用它,我覺得我沒有完全表達我自己,我想要做的是:當我通過c.set_hand()多次改變該值時,該值將被存儲並添加到Aufruf中的以前的值中。例子我設置c.set_hand(10)和之後(20),我應該從Aufruf()= 30得到 – Roman

0

使用方法除了改變價值,而不要使用大寫字母或駝峯類裏面。

class Hand: 
    def __init__(self, 0): 
    self.hand = hand 
    def get_hand_bigger(self, addition): 
     self.hand += addition