我正在尝试使用类Card中的card_number()和card_suit()方法来确定类规则中的last_card套装和编号
class Card:
def __init__(self, card):
self.card = card
self.number = self.card_number(card)
self.suit = self.card_suit(card)
def card_number(self, card):
card = self.card
number = card[0]
return number
def card_suit(self, card):
card = self.card
suit = card[-1]
return suit
class Rules(Card):
def __init__(self, last_card, card):
Card.__init__(self, card)
self.last_card = last_card
self.last_card_number = self.card_number(self.last_card)
self.last_card_suit = self.card_suit(self.last_card)它看起来像是当我访问函数时,他们保存了卡片,并且只适用于卡片变量,也适用于最后一张卡片
现在我得到的是:
a = Rules(last_card="As", card = "5c")
print(a.card) -> "5c"
print(a.number)-> "5"
print(a.suit) -> "c"
print("last_card")
print(a.last_card) -> "As"
print(a.last_card_number) -> "5"
print(a.last_card_suit) -> "c"我期待着:
a = Rules(last_card="As", card = "5c")
print(a.card) -> "5c"
print(a.number)-> "5"
print(a.suit) -> "c"
print("last_card")
**print(a.last_card) -> "As"
print(a.last_card_number) -> "A"
print(a.last_card_suit) -> "s"**发布于 2019-06-26 15:51:08
用这种方式更新你的代码,
class Card:
def __init__(self, card):
self.card = card
self.number = self.card_number(card)
self.suit = self.card_suit(card)
@staticmethod
def card_number(card):
# card = self.card
number = card[0]
return number
@staticmethod
def card_suit(card):
# card = self.card
suit = card[-1]
return suit
class Rules(Card):
def __init__(self, last_card, card):
Card.__init__(self, card)
self.last_card = last_card
self.last_card_number = self.card_number(self.last_card)
self.last_card_suit = self.card_suit(self.last_card)发布于 2019-06-26 15:52:55
正如我在评论中提到的,当您只需要Rules来容纳两个Card实例时,您不需要将Rules作为Card的超类
您可以修改您的类以实现此目的,如下所示
class Card:
#Instantiating instance attributes
def __init__(self, card):
self.card = card
self.number = self.card[0]
self.suit = self.card[-1]
class Rules:
#Two instances of Card class
def __init__(self, last_card, card):
self.last_card = Card(last_card)
self.card = Card(card)
a = Rules(last_card="As", card = "5c")
print(a.card.card)
print(a.card.number)
print(a.card.suit)
print(a.last_card.card)
print(a.last_card.number)
print(a.last_card.suit)输出将是
5c
5
c
As
A
s您甚至可以去掉Rules类,创建两个Card类的实例,然后使用它们
last_card = Card('As')
card = Card('5c')发布于 2019-06-26 15:49:52
这里的问题是,您覆盖了Card类中方法的参数card:
def card_number(self, card):
card = self.card
number = card[0]
return number
def card_suit(self, card):
card = self.card
suit = card[-1]
return suit删除这里的card = self.card行,它应该可以正常工作。它应该看起来像这样:
def card_number(self, card):
number = card[0]
return number
def card_suit(self, card):
suit = card[-1]
return suithttps://stackoverflow.com/questions/56767535
复制相似问题