TypeError:' NoneType' object不可调用类初始化

时间:2015-12-30 19:45:14

标签: python

我想在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])

1 个答案:

答案 0 :(得分:2)

    Card=deck.RemoveCard()
    Card.PrintCard()

执行此代码后,不再可以访问类Card;它的价值已经黯然失色。之后,当您执行Card(int(abs(...))时,卡片指的是返回的RemoveCard(),而不是Card类。

将变量的名称更改为其他名称,以免发生此冲突。

    thing=deck.RemoveCard()
    thing.PrintCard()