【发布时间】:2014-08-17 11:19:51
【问题描述】:
- 我有 2 个课程 - 卡片和手牌
- 卡片有属性:花色、等级
- 手牌是通过在卡片上附加空列表来创建的。所以它的属性 是卡片。
我需要在控制台中编写类似于:
Ace D , Queen H
我在谷歌上发现我需要对__str__(self) 方法进行仔细的修改。
我不知道如何在方法__str__(self) 中写出我的输出会像我上面提到的那样的东西。例如:
return self.hand
执行以下操作:
[<__main__.Card object>, <__main__.Card object>]
我认为 Hand 对象就是这样的列表:
[[卡片 1],[卡片 2],..]
这是
[[套装1,等级1],[..,..],..]
但我不知道如何从列表中获取该信息。 这样写没有帮助: hand[i][0] 表示花色,hand[i][1] 表示第 i 张牌的等级 还是没搞定。这是代码:
class Card:
def __init__(self, suit, rank):
if (suit in SUITS) and (rank in RANKS):
self.suit = suit
self.rank = rank
else:
print "Invalid card: ", suit, rank
def __str__(self):
return self.suit + self.rank
class Hand:
def __init__(self):
self.hand = []
def __str__(self):
return str(self.hand)
def add_card(self, card):
self.hand.append(card)
创建对象卡片
c1 = Card("S", "A")
c2 = Card("C", "2")
创建对象手
test_hand = Hand()
加牌
test_hand.add_card(c1)
test_hand.add_card(c2)
print test_hand
结果是:
[<__main__.Card object>, <__main__.Card object>]
【问题讨论】:
标签: python oop methods attributes self