Python __init__中的类作为参数
我在用Python实现一副扑克牌的时候遇到了一些困难。我有两个类,分别是Rank(牌面)和Suit(花色)。现在我需要实现一个新的类Card(牌),这个类需要接收另外两个类作为参数。
class Card(object):
def __init__(self, rank, suit):
self.rank = rank
self.suit = suit
当我尝试这样做:
card = Card(*parameters*)
,然后想要通过card.rank
来获取结果时,它应该返回<__main__.Ace object at 0x7f2632ed5890>
。这里的Ace是牌的名称。但我的代码返回的是
<class '__main__.Ace'>
。我觉得在CARD类中接收这两个类作为参数后,我不需要继承Rank和Suit,对吗?
1 个回答
0
你需要在卡片类的 __init__
方法中创建一个等级对象,可以试试下面的方法。这会创建一个等级类的对象和一个花色类的对象(假设等级和花色不需要任何参数)。
class Card(object):
def __init__(self, rank, suit):
self.rank = rank()
self.suit = suit()
另外,你也可以在卡片类外面创建等级和花色对象,然后把它们传递给 __init__
方法。
我试了下面的方法,得到了输出 <__main__.Rank instance at 0xb7226dac>
class Card(object):
def __init__(self,rank,suit):
self.rank=rank()
self.suit=suit()
class Rank:
pass
class Suit:
pass
def main():
c=Card(Rank,Suit)
print c.rank
main()
希望这对你有帮助。