[我想表示一种类似于无序纸牌的结构(例如在Python 3.7中,该结构具有可以将一张纸牌视为大小为1的纸牌的特性。
class Deck:
def __init__(self, cards, owner):
self.owner = owner
self.cards = cards
class Card(Deck):
def __init__(self, number, suit, owner):
self.number = number
self.suit = suit
super().__init__({self}, owner)
def __eq__(self, other):
return self.number == other.number and self.suit == other.suit and self.owner == other.owner
def __hash__(self):
return hash((self.number, self.suit, self.owner))
card = Card(5, 'clubs', 'me')
(以上返回AttributeError: 'Card' object has no attribute 'owner'
)
如果要订购我的卡座,这将很简单,因为Card.__init__()
只会将列表[self]
传递到Deck.__init__()
。但是,我不能只将{self}
传递给Deck.__init__()
,因为Card.__hash__()
可能需要设置Deck属性!有很多变通办法;我可以简单地在self.owner = owner
中设置Card.__init__()
,也可以将[self]
传递给Deck.__init__()
,然后在正文中设置self.cards = set(cards)
,但对我来说,这似乎很奇怪,代码的其他部分应该取决于甲板选择存储其卡。因此,我的问题不是如何code这种关系,而是解决这种关系的最佳方法,这样我就不必担心这些问题。有什么想法吗?我搜索了这个问题,但没有找到任何东西,但这很简单,因此如果重复,我深表歉意。感谢您的阅读!
编辑:如果一副纸牌对我的结构不是一个很好的类比,(希望)更准确的类比将是一个多项式,它是一个多项式的总和,但每个多项式也是一个多项式,仅以自身为一项。
我想表示一种类似于无序纸牌的结构(例如在Python 3.7中),该结构具有可以将一张纸牌视为大小为1的纸牌的特性。类别Deck:...
一张卡片的甲板与一张卡片在根本上是不同的概念,为了使卡片甲板存在,非甲板卡片也必须独立存在。