【发布时间】:2013-05-31 17:46:36
【问题描述】:
python 新手,如果这是小问题,我们深表歉意:
编写一个小模块(最终可能是一个包?)。它对于单个文件来说太大了,所以我将较大的类移动到单个文件中。我所有的类都扩展了我用来容纳一些基本功能的基类。
这是我的问题的一般形式:
runtime.py:
import baseclass
import subclass
#do stuff
baseclass.py
class BaseClass():
def __init__(self):
pass
def sharedMethod(self):
pass
# shared functionality
subclass.py
class SubClass(baseclass.BaseClass):
def __init__(self):
BaseClass.__init__(self)
回溯显示:
Traceback (most recent call last):
File "/path/to/runtime.py", line 2, in <module>
import baseclass, subclass
File "path/to/subclass.py", line 2, in <module>
class Subclass(baseclass.BassClass):
NameError: name 'baseclass' is not defined
如果我将 baseclass 导入到 subclass.py 中,它可以正常工作,但这似乎意味着每个扩展 baseclass 的类都需要导入它,不能是这种情况这样做的适当方法是一遍又一遍地导入baseclass。
我希望能够按照它们相互构建的顺序从单独的文件中导入类,我只是不知道该怎么做。建议?
注意:所有答案都有帮助/正确。对于“正确”的答案,我只是选择了最彻底/最有可能对每个人有用的答案。干杯,谢谢。 :)
【问题讨论】:
-
但这就是它的工作原理。如果之前没有导入 SubClass 应该如何知道它的 BaseClass?
-
克服此错误后,我认为您需要将“超级”调用更改为
baseclass.BaseClass.__init__(self)
标签: python oop inheritance python-2.7