Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python子类实例无法访问父类启动的变量_Python_Python 3.x_Pyglet - Fatal编程技术网

Python子类实例无法访问父类启动的变量

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

以下是背景。我正在使用Pyglet库用python 3.7制作一个游戏。我试图访问一个名为
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类,看看它是否适用于此,但不幸的是,即使不必从另一个文件导入该类,它仍然找不到变量。同样的错误