Python子类实例无法访问父类启动的变量
以下是背景。我正在使用Pyglet库用python 3.7制作一个游戏。我试图访问一个名为Python子类实例无法访问父类启动的变量,python,python-3.x,pyglet,Python,Python 3.x,Pyglet,以下是背景。我正在使用Pyglet库用python 3.7制作一个游戏。我试图访问一个名为dead的布尔变量,该变量是在父类的\uuuu init\uuuu函数中启动的。在子类中,我在子类自己的\uuuu init\uuu中调用了父类的\uuuu init\uuu函数。每当我试图从子类继承的父方法中访问dead变量时,我总是得到一个错误,即子类找不到该变量 父类在PhysicalObject.py中称为PhysicalObject: import pyglet class PhysicalOb
dead
的布尔变量,该变量是在父类的\uuuu init\uuuu
函数中启动的。在子类中,我在子类自己的\uuuu init\uuu
中调用了父类的\uuuu init\uuu
函数。每当我试图从子类继承的父方法中访问dead
变量时,我总是得到一个错误,即子类找不到该变量
父类在PhysicalObject.py中称为PhysicalObject:
import pyglet
class PhysicalObject(pyglet.prite.Sprite):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.dead = False
子类在Player.py中被称为Player(与physicalobject.py目录相同。目录被称为game
)
最后,从主脚本文件的一个目录级别开始,我们将其全部合并并创建播放器:
import pyglet
from game import player
p = player.Player()
我不确定孩子为什么看不到最后一行的self.dead
,但我知道我对继承的理解不正确。我不习惯python,但在其他编程语言中,我们在\uuuu init\uuuu
之前首先定义变量,我知道在python中这样做会产生一个静态变量,但这似乎是我获得我想要的结果的唯一方法。我已经搜索了好几个小时,试图让这项工作通过每一个建议已经要求堆栈溢出没有运气
具体错误如下:
AttributeError:'Player'对象没有属性'dead'
编辑:这在技术上从未得到过回答,但当我尝试做与裸体完全相同的事情时,我让裸体脚本使用与上面相同的样式语法工作。我需要进一步分解我的项目,弄清楚到底发生了什么,但当我发现后,我会再次修改这篇文章
import pyglet
class PhysicalObject(pyglet.sprite.Sprite):
def __init__(self, *args, **kwargs):
self.dead = False
class Player(PhysicalObject):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print(self.dead)
if __name__ == "__main__":
p = Player()
如果可以,请尝试正确导入PhysicalObject
类
import pyglet
from game import physicalobject
class Player(physialobject.PhysicalObject):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
PhysicalObject.__init__(self)
print(self.dead)
如果可以,请尝试正确导入PhysicalObject
类
import pyglet
from game import physicalobject
class Player(physialobject.PhysicalObject):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
PhysicalObject.__init__(self)
print(self.dead)
这为我解决了问题
这为我解决了它首先,请修复您的缩进。第二,准确说明打印变量时发生的情况。“你犯了什么错误?”丹尼尔罗斯曼在底部补充道:“谢谢你。”。还修复了缩进。这段代码应该可以很好地工作。@DanielRoseman它的美妙之处在于它没有。当我早上回到家的时候,我就要发布整个事情的zip文件。首先,请修复你的缩进。第二,准确说明打印变量时发生的情况。“你犯了什么错误?”丹尼尔罗斯曼在底部补充道:“谢谢你。”。还修复了缩进。这段代码应该可以很好地工作。@DanielRoseman它的美妙之处在于它没有。当我早上回到家时,我将发布整个事件的整个zip文件。我为您修改了我的回答,因为我实际上是从主运行脚本文件创建播放器的,而这两个类是在主脚本文件之外的各自文件中定义的。从各自的文件路径导入主脚本文件中的其他类。你试过了吗?只是为了好玩,我只是移动了physicalobject.py文件底部的player类,看看它是否适用于此,但不幸的是,即使不必从另一个文件导入该类,它仍然找不到变量。同样的错误我修改了我的回答,因为我实际上是从主运行脚本文件创建播放器的,而这两个类是在主脚本文件之外的各自文件中定义的。从各自的文件路径导入主脚本文件中的其他类。你试过了吗?只是为了好玩,我只是移动了physicalobject.py文件底部的player类,看看它是否适用于此,但不幸的是,即使不必从另一个文件导入该类,它仍然找不到变量。同样的错误