我将简化这个来解释。我们说我有一个主文件和一个引擎模块 为什么我不能在没有收到错误消息的情况下将Corridor and Weapon传递给Engine类中的 init ?即,'名称错误:未定义走廊'。当所有内容都在一个文件中时,我确实让它工作......提前感谢您的建议!
#In the main file
import engine
a_engine = engine.Engine(Corridor, Weapon)
#In the engine module
class Engine(object):
def __init__(self, room, weapon):
self.room = room.room()
self.weapon = weapon.weapon()
答案 0 :(得分:1)
Engine
班级不知道走廊是什么。它仍然在engine
模块的命名空间中。如果您执行了以下操作:
from engine import Engine
a_engine = Engine(Corridor, Weapon)
它应该适合你。它的作用是"升降机"将Engine
类放入主文件的更宽名称空间中。通常,您不想这样做。
因此,您需要让Engine
了解Corridor
和Weapon
。最佳实践方法是在不同的模块中定义它们,并在engine.py
中执行以下from extra import Corridor, Weapon
。然后在main中,您可以a_engine = engine.Engine(extra.Corridor, extra.Weapon)
。