在小纸牌游戏中调用对象的属性时发生TypeError

时间:2019-04-17 21:18:46

标签: python string

我正在写纸牌游戏。

我创建了一个'card'类,以及一个带有card对象作为属性的甲板类。我成功地完成了随机播放,打印卡片组列表,打印卡片组中剩余的卡片以及使系统正常运行的功能。 现在,我尝试根据卡的种子(发给第一张卡,并考虑其种子的种子)属性为每张卡赋予属性(“ Briscola” = True / False),然后将Briscola的值更改为True每张与那颗种子匹配的卡),但是我遇到了2个问题。

当我尝试运行

prova = Mazzo()
prova.inizio()

“ inizo”方法(应选择一张卡片并进行种子处理)给出此TypeError:

in inizio
    print('La briscola è', self.semi[brisc.Seme])
TypeError: 'str' object is not callable

这是我写的:

import random

class Carta:
    semi = ['Bastoni', 'Spade', 'Coppe', 'Denari']
    numeri = ['1', '2', '3', '4', '5', '6', '7', 'Fante', 'Cavallo', 'Re']
    briscola = None
    def __init__(self, Seme = 0, Valore = 0, Briscola = False):
        self.Seme = Seme
        self.Valore = Valore
        self.Briscola = Briscola
    def __str__(self):
        return (self.numeri[self.Valore] + " di " +
                self.semi[self.Seme])
class Mazzo:
    semi = ['Bastoni', 'Spade', 'Coppe', 'Denari']
    numeri = ['1', '2', '3', '4', '5', '6', '7', 'Fante', 'Cavallo', 'Re']

    def __init__(self):
        self.Carte = []
        for seme in range(4):
            for valore in range(10):
                self.Carte.append(Carta(seme,valore))
    def inizio(self):
        brisc = random.choice(self.Carte)
        print = ('-------------La partita è iniziata!-------------')
        print('La carta iniziale è ' , brisc)
        print('La briscola è', self.semi[brisc.Seme])
        for carta in self.Carte:
            if carta.Seme == brisc.Seme:
                carta.Briscola = True
        self.Carte.remove(brisc)

很抱歉,但是变量名是我的母语。为了更好的理解,这是一些翻译: carta / e =牌/ s seme / i =种子/ s Mazzo =副牌号码=数字prova = foo

1 个答案:

答案 0 :(得分:1)

print = ('-------------La partita è iniziata!-------------')

该行将print()函数重新分配为纯字符串,而不再是函数。

因此,下次调用print('something')时,您会收到错误消息。

大概是错字,而且您并不是要在其中插入=