AttributeError:“Fighter”对象没有属性“Fighter”

2024-06-26 14:25:29 发布

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

我是新来的,我得到了一个错误,我希望有人能帮助我,并解释我的错误

错误:

line 178, in applyThrust
shipPos = self.Fighter.getPos(self.origin)
AttributeError: 'Fighter' object has no attribute 'Fighter'

    class Fighter(SphereCollideObj, object):
        fighterCount = 0

        def __init__(self, modelPath, parentNode, nodeName, posVec, traverser, scaleVec = 1.0):
            super(Fighter, self).__init__(modelPath, parentNode, nodeName, 0, 0, 0, 3.0)
            self.modelNode.setScale(scaleVec)
            self.modelNode.setPos(posVec)

            self.trav = traverser

            self.origin = render.attachNewNode("origin")
            self.origin.setPos(0, 0, 0)
            self.origin.hide()

            self.setKeyBindings()

            self.hud = Hud("./Tools/Hud.x", self.modelNode, "Hud", (0, 10, 0))



        def setKeyBindings(self):
            self.accept("space", self.thrust, [1])
            self.accept("space-up", self.thrust, [0])

        def thrust(self,keyDown):
            if keyDown:
                taskMgr.add(self.applyThrust, "thrust")
            else:
                taskMgr.remove("thrust")
                self.acceptOnce("space", self.thrust,[1])
                self.acceptOnce("space-up", self.thrust,[0])
        def applyThrust(self, task):
            shipPos = self.Fighter.getPos(self.origin)
            hudPos = self.hud.modelNode.getPos(self.origin)

            trajectory = hudPos - shipPos
            rate = 5
            trajectory.normalize()
            self.Fighter.setFluidPos(shipPos + trajectory * rate)

Tags: selfobjectinitdef错误spaceorigintrajectory
2条回答

在这种情况下,“自我”是什么?我是说,它代表什么样的物体? 我认为这个错误消息很有帮助

定义应用信任(自我、任务)>;阶级斗争的方法

自我斗士>;调用“Fighter”成员或“self”属性,在本例中为Fighter实例

在self.Fighter.setFluidPos(…)中也会出现同样的错误

我认为Mircea想说的是Fighter中的self.Fighter.getPos(self.origin)是多余的。既然对象是类Fighterself.getPos(self.origin)就足够了(假设这个超类有一个名为getPos()的方法,您就不会显示它的代码)

相关问题 更多 >