"Python类属性错误:'Event'没有属性"

2024-10-01 13:34:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个代码作为一个游戏的合作伙伴,几个朋友和我正在做的乐趣,我是一个完全的傻瓜在python。作为游戏的一部分,我为战场创建了一个类:

from tkinter import *
import random

root = Tk()



class battle:

    def __init__(self, MonHealth):
        self.Distance = 10
        self.Center = 5
        self.MonHealth = MonHealth
    def LEFT1(self):
        if self.Center < 20:
            self.Distance += 1
            distance = abs(self.Distance)
            self.Center += 1
            center = abs(self.Center)
            print (str(distance) + " meters" + "    " + str(center) + " meters")
    def right1(self):
        if self.Center > -20:
            self.Distance -= 1
            self.Center -= 1
            center = abs(self.Center)
            distance = abs(self.Distance)
            print (str(distance) + " meters" + "    " + str(center) + " meters")
    def Lunge1(self):
        hit = [0,1,2,3,4]
        random.shuffle(hit)
        if abs(self.Distance) <= 1 and hit[0] >= 2:
            print ("strike")
            self.MonHealth -= 10
            if self.MonHealth < 0:
                print ("YOU WIN")
        elif abs(self.Distance) <= 1:
            print ("blocked")
        else:
            print ("miss")
    def block1(self):
        print ("blocked enemy")




    root.bind("<Left>", LEFT1)

    root.bind("<Right>", right1)

    root.bind("<Return>", Lunge1)

    root.bind("<Shift_L>", block1)

运行该类时,出现以下错误:

AttributeError: 'Event' object has no attribute 'Center'

我如何解决这个问题?在

我读过其他关于属性错误的解释和解决方案,但它们都是关于str对象的。在

另外,如果我完全删除“Center”,那么MonHealth也会出现同样的错误。我想我只是把代码搞砸了,但是有什么办法可以挽救它吗?谢谢!在


Tags: selfifbinddefrootabsdistancecenter
1条回答
网友
1楼 · 发布于 2024-10-01 13:34:55

你用错了你的课。你需要先初始化它:

a=battle(45) # you can use any number you want instead of 45

然后您必须bind,如下所示:

^{pr2}$

您还可以将类的方法装饰为@classmethod,但在您的情况下这没有多大意义,因为您仍然需要初始化self.MonHealth变量。在

相关问题 更多 >