我正在写我的第一个python脚本,这个包/模块的东西让我疯了。让我们开始与我的文件夹布局需要python包和模块的解释
builder.py
-buildModule\__init__.py
-buildModule\AppList.py
-buildModule\BuildClass.py
-buildModule\ConfigSystem.py
-buildModule\MenuSystem.py
-buildModule\Singleton.py
好了,我__init__.py
看起来像这样
from ConfigSystem import *
from BuildClass import *
from MenuSystem import *
from AppList import *
from buildModule.Singleton import Singleton
现在,我尝试来装饰我的configsystem作为一个单身,所以我的单身样子
class Singleton:
def __init__(self, decorated):
self._decorated = decorated
def Instance(self):
try:
return self._instance
except AttributeError:
self._instance = self._decorated()
return self._instance
def __call__(self):
raise TypeError(
'Singletons must be accessed through the `Instance` method.')
现在,与我的配置系统类,如果即时阅读手册正确,这应该工作
import Singleton
@Singleton
class ConfigSystem:
但即时得到
TypeError: 'module' object is not callable
我已经阅读手册几次的模块组成部分,现在和IM不太得到它。为什么这不起作用?
是否有一个模块/包教程在那里写得比手册更清晰/不同?
为什么'ConfigSystem'是模块名称和类名?这不会令人困惑吗?你能改变其中一个名字吗?它几乎可以消除你的''模块'对象不可调用'错误。 –
尝试“从Singleton import Singleton”。你导入的Singleton不是一个类,而是一个模块。这就是你的错误信息所说的。 – rocksportrocker
@scphantm嘿,这是_my_单身执行。 [Character for character](http://stackoverflow.com/questions/42558/python-and-the-singleton-pattern/7346105#7346105)。 :D我很高兴你发现它很有用,但要小心:如果你以后想要继承那个单例,它就不起作用。 –