Python __init__中的类作为参数

0 投票
1 回答
4619 浏览
提问于 2025-04-17 23:05

我在用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()

希望这对你有帮助。

撰写回答