我正在寫我的第一個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我很高興你發現它很有用,但要小心:如果你以後想要繼承那個單例,它就不起作用。 –