python - 在小纸牌游戏中调用对象属性时出现 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
解决方案
print = ('-------------La partita è iniziata!-------------')
该行将print()
函数重新分配为纯字符串,并且不再是函数。
所以下次你打电话时print('something')
,你会得到一个错误。
大概这是一个错字,你不是故意的=
。
推荐阅读
- vue.js - Vuex subscribe 和 getter 有什么区别?
- ios - 在引入“tuist”进行快速项目管理时,“tuist edit”关键字不起作用
- html - HTML:当垂直滚动仅在父元素上时冻结水平滚动条位置
- python - 将不同的列值堆叠到熊猫数据框中的一列中
- swiftui - 在 NavigationView 之外设置 NavigationView 选择
- pid - 为 microbit 制作 PID 脚本
- python - 创建嵌入矩阵时如何确定 num_words 变量?
- bash - 如何在 GitLab 中检索给定组名的对应组 ID
- python - 您可以将属于单个项目的不同 django 应用程序容器化到不同的 docker 容器中吗?
- environment-variables - “仅支持绝对 URL”当获取 webhooks Nextjs