2016-03-21 22 views
0

Şimdi udemy.com'da ve OOP sınıflarım için birkaç hafta python öğreniyorum, mentor bir Blackjack oyunu yaratmamızı istedi. İlk görevim güverte için bir sınıf oluşturmaktı. Ve yaptığım bu:Python'da Blackjack oyunu

class Deck(object): 
    totalCards = 0 
    deck = [ 
     ["A", totalCards], 
     ["2", totalCards], 
     ["3", totalCards], 
     ["4", totalCards], 
     ["5", totalCards], 
     ["6", totalCards], 
     ["7", totalCards], 
     ["8", totalCards], 
     ["9", totalCards], 
     ["10", totalCards], 
     ["J", totalCards], 
     ["Q", totalCards], 
     ["K", totalCards], 
    ] 

    def __init__(self, numberOfDecks): 
     self.numberOfDecks = numberOfDecks 
     Deck.totalCards = numberOfDecks * 4 

    def printDeck(): 
     for i in Deck.deck: 
      print i 

newDeck = Deck(6) 
newDeck.printDeck() 

şeydir ... Ben güverte yazdırmaya çalıştığınızda alıyorum ve yöntem printDeck hiçbir argüman alır ve ben bir geçiyorum söylüyor hatası. Neden olduğu hakkında hiçbir fikrim yok .. Bana yardım eden var mı?

  • Python 2.7.11
  • Windows'u 10
  • CMD kullanıyorum
  • Sublime Text 3
+5

Nesneyi yönteme dolaylı olarak iletmek, yöntemin bildirimini "def yazdırmadeck (self):" olarak değiştirin. – Maroun

+0

Ayrıca, muhtemelen "self.totalCards = numberOfDecks * 4" ve 'self.deck için i ':' Deck.totalCards = numberOfDecks * 4' yerine '' 've' Deck.deck: 'i için yapmalısınız. İlk durumda, örneğin deck/totalCards'ı değiştiriyorsunuz. İkincisi, sınıfın deck/totalCards'ını değiştirir. Birden çok Deck örneğine sahip olmak istiyorsanız bu durum sizi etkileyecektir –

+0

İlgili soru: "[Neden kendi kendine argümanını bir Python yöntemine sahip olmak gerekiyor?] (Https://stackoverflow.com/questions/68282/why- do-sen-ihtiyaç, açıkça var-kendini-argüman-içine-a-python-yöntemi)". –

cevap

2

self - yani, nesne olduğu - her zaman olduğu gibi sınıf yöntemlerine geçirilir ilk argüman, ancak yöntem tanımınız, self bile değil, bağımsız değişkenler alır - ayrıntı için bkz. here.

+0

Oh ... Aptal bir hata haha ​​Teşekkürler dostum! –