我想在python中创建2个类,一个是卡片和卡片组,这是一个部分 卡类代码:
class Card(object):
def __init__(self,Value,Type):
self.Value=Value
self.Type=Type
def PrintCard(self):
print "<"+str(self.Value)+","+str(self.Type)+">"
def CardToString(self):
return "<"+str(self.Value)+","+str(self.Type)+">"
现在这里是甲板课的一部分:
class Deck(object):
def __init__(self):
self.Cards=[]
self.NumOfCards=0
def FillDeck(self):
self.Cards=[]
self.NumOfCards=52
for i in range(1,5):
for j in range(2,15):
TempCard=Card(j,i)
self.Cards.append(TempCard)
def AddCard(self,OtherCard):
self.Cards.append(OtherCard)
self.NumOfCards=self.NumOfCards+1
def RemoveCard(self):
if self.NumOfCards>=1:
TempCard=self.Cards[0]
self.Cards=self.Cards[1:]
self.NumOfCards=self.NumOfCards-1
else:
return None
return TempCard
def Count(self):
return self.NumOfCards
现在当我先按任务2然后尝试添加卡(mission3)时会发生错误:
symbol=["diamond","spade","club","heart"]
if TaskMission==2:
if deck.Count()>0:
Card=deck.RemoveCard()
Card.PrintCard()
#Do Mission3
if TaskMission==3:
flag=False
x=raw_input()
x=str.split(x)
yolo=str(x[0]).isdigit()
for i in range(5):
if symbol[i]==x[1]:
flag=i+1
break
if flag!=False and yolo==True:
card=Card(int(abs(int(x[0]))),symbol[flag-1])
deck.AddCard(card)
现在错误出现在行中:card=Card(int(abs(int(x[0]))),symbol[flag-1])
答案 0 :(得分:2)
Card=deck.RemoveCard()
Card.PrintCard()
执行此代码后,不再可以访问类Card
;它的价值已经黯然失色。之后,当您执行Card(int(abs(...))
时,卡片指的是返回的RemoveCard()
,而不是Card
类。
将变量的名称更改为其他名称,以免发生此冲突。
thing=deck.RemoveCard()
thing.PrintCard()