这是我的名为Game_Factors
的python文件:
from Fesnoria_Game_Setup import Game_Setup
class Game_Events(Game_Setup):
def __init__(self):
super(Game_Events, self).game_setup(self.MAP_FILENAME, self.GS)
我正在导入包含子类Game_Setup
的类Setup
。
在子类Setup
中,我有两个变量,一个名为self.MAP_FILENAME
,另一个名为self.GS
,我在导入Game_Setup
类时将其用作参数。< / p>
但是当以Game_Setup
和self.MAP_FILENAME
作为参数导入self.GS
类时,我得到错误代码:
AttributeError: 'Game_Factors' object has no attribute 'MAP_FILENAME'
我有什么想法可以解决这个问题吗?
Game_Setup:
class Game_Setup(Setup):
def __init__(self)
super(Game_Setup, self).__init__()
答案 0 :(得分:1)
试试这个:
def __init__(self):
super(Game_Events, self).__init__()
self.game_setup(self.MAP_FILENAME, self.GS)
答案 1 :(得分:0)
$ cat game_event.py
from game_setup import Game_Setup
class Game_Event(Game_Setup):
def __init__(self):
super(Game_Event, self).__init__()
print self.MAP_FILENAME
ge = Game_Event()
$ cat game_setup.py
from setup import Setup
class Game_Setup(Setup):
def __init__(self):
super(Game_Setup, self).__init__()
$ cat setup.py
class Setup(object):
def __init__(self):
self.MAP_FILENAME = 'myfile.py'
self.GS = 'GS'
像上面那样。
答案 2 :(得分:0)
如果我正确理解您在那里描述的内容,原因是您self.MAP_FILENAME
内的self.GS
范围内没有__init__
和Game_Events
因为它们已定义在__init__
的{{1}}超类中,在这个地方没有被调用过。超类的构造函数不是隐式调用的,因此添加对超类Setup
的调用:
__init__
这种方式应该可行。
注意:如果您决定使用from Fesnoria_Game_Setup import Game_Setup
class Game_Events(Game_Setup):
def __init__(self):
super(Game_Events, self).__init__()
super(Game_Events, self).game_setup(self.MAP_FILENAME, self.GS)
,请在代码中一致地使用它,否则您可能无法在继承树中获得您期望的内容,因为MRO的工作原理。