'supみんな、
私は数日以内に試験前にいつものランダムな小さなプログラムをやっていて、5枚のカードドローポーカーを書くことにしました。単にコードで少し遊ぶためのものなので、基本的なクラスからは何も継承しませんでした。私のデッキにはリスト属性が含まれており、簡単な読みやすさと機能に必要な機能が与えられています。
import random
from card import Card
class Deck():
def __init__(self):
self.cards = self.__generate_cards()
random.shuffle(self.cards)
def __str__(self):
cards_str = ""
for card in self.cards:
cards_str += str(card)
return cards_str
def __getitem__(self,index):
return self.cards[index]
def __generate_cards(self):
cards = []
for i in range(4):
for j in range(13):
cards.append(Card(i,j+1))
return cards
def pop(self,index):
return self.cards.pop(index)
ご覧の.__iter__
とおり、メソッドが見つかりません。つまり、Deck()
オブジェクトを反復処理できません。Pythonは私に別の話を示しています。何らかの理由で、次のコードはカードオブジェクトをループし、self.cards
実際にカードを印刷しますiterator
。
deck = Deck()
for card in deck:
print(card) # cards have a __str__ method
Pythonの魔法の一部であり、オブジェクトにループの可能性を与える場合を除いて、私にはあまり意味がありません。; p誰かがこれで私に光を見せてもらえますか?前もって感謝します!