2013-12-18 137 views
-1

我正在嘗試創建一小段代碼,它將返回一整套卡。我試圖從init()方法中調用createDeck()方法。出於某種原因,出現錯誤。任何人都可以解釋一下這個解決方案,或者爲什麼它不工作?我嘗試刪除這個類,並且只使用這些方法,並且它完美地工作。Python - 從一個類中調用一個類中的方法

class FullDeck(): 
    ''' 
    Returns a full 52 card deck 
    ''' 
    names = ('Ace','One','Two','Three','Four','Five','Six','Seven','Eight', 
       'Nine','Ten','Jack','Queen','King')  
    suits = ('Hearts','Spades','Clubs','Diamonds') 
    def __init__(self): 
     self.deck = createDeck() 

    def createDeck(self): 
     currentDeck = [] 
     for it1 in FullDeck.names: 
      for it2 in FullDeck.suits: 
       currentDeck.append(it1 + ' of ' + it2) 
     return currentDeck 
+0

顯示什麼錯誤?另外,你可以在你打電話的地方加入代碼嗎? – 2013-12-18 04:44:24

+4

使用'self.deck = self.createDeck()'。 – ChrisP

+0

非常感謝@ChrisP!沒有意識到你在這兩方面都需要自我。 – bob

回答

2

與其他語言不同,Python類不具有對其自身的隱式引用。如果您想調用同一對象上的任何方法,則必須明確使用引用。

self.deck = self.createDeck() 

另請注意,由於該方法僅用於在對象上創建屬性,因此它應該自己執行該操作。

def __init__(self): 
    ... 
    self.createDeck() 

def createDeck(self): 
    currentDeck = [] 
     ... 
    self.deck = currentDeck 
+0

我想你是指' self.createDeck()'在第3行 – bob

+0

@bob:是的,已修復。 –

0

作爲一個評論建議,你需要使用

def __init__(self): 
    self.deck = self.createdeck() 

得到你正在尋找的結果。

相關問題