Python 2.7 - 无法将参数从主文件传递到模块类

时间:2014-04-24 18:14:20

标签: python

我将简化这个来解释。我们说我有一个主文件和一个引擎模块 为什么我不能在没有收到错误消息的情况下将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()

1 个答案:

答案 0 :(得分:1)

Engine班级不知道走廊是什么。它仍然在engine模块的命名空间中。如果您执行了以下操作:

from engine import Engine
a_engine = Engine(Corridor, Weapon)

它应该适合你。它的作用是"升降机"将Engine类放入主文件的更宽名称空间中。通常,您不想这样做。

因此,您需要让Engine了解CorridorWeapon。最佳实践方法是在不同的模块中定义它们,并在engine.py中执行以下from extra import Corridor, Weapon。然后在main中,您可以a_engine = engine.Engine(extra.Corridor, extra.Weapon)