首页 > 解决方案 > 在小纸牌游戏中调用对象属性时出现 TypeError

问题描述

我正在写一个纸牌游戏。

我制作了一个“卡片”类和一个卡片类,其中包含卡片对象作为属性。我成功地编写了洗牌、打印牌组列表、打印牌组中剩余的牌以及制作功能正常的“抽牌”系统的功能。现在我试图根据卡片的种子为每张卡片赋予一个属性(“Briscola”= True/False)(第一张卡片由经销商绘制,考虑其种子然后将 Briscola 的值更改为 True每张匹配提取种子的卡片)但我遇到了 2 个问题。

当我尝试跑步时

prova = Mazzo()
prova.inizio()

“inizo”方法(应该选择一张卡片并做种子)给出这个类型错误:

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 = card/s seme/i = seed/s Mazzo = deck numeri = numbers prova = foo

标签: pythonstring

解决方案


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

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

所以下次你打电话时print('something'),你会得到一个错误。

大概这是一个错字,你不是故意的=


推荐阅读