背景:我正在使用設備供應商提供的API模塊,它將設備登錄數據(設備主機名,會話ID等)存儲爲全局變量;我試圖弄清楚是否可以讓模塊的多個實例代表登錄到多個設備。全局模塊變量的多個實例?
到目前爲止,我已經嘗試了帶有測試代碼,沒有一個是有工作了幾個策略:
測試模塊代碼:statictest.py
count = 0
class Test():
@classmethod
def testcount(cls):
global count
count += 1
return count
第一次嘗試:導入模塊多次和實例:
>>> import statictest as s1
>>> import statictest as s2
>>> s1.Test.testcount()
1
>>> s1.Test.testcount()
2
>>> s2.Test.testcount()
3
第二個嘗試:內部類導入模塊,實例化類:
#!/usr/bin/env python2.7
class TestMod():
s = __import__('statictest')
def test(self):
ts = self.s.Test()
return ts.testcount()
t = TestMod()
u = TestMod()
print t.test()
print u.test()
那一個沒有工作之一:
[~/]$ ./moduletest.py
1
2
這似乎是它應該是顯而易見的,但有什麼辦法來封裝模塊,使得多個實例可用?
不需要。如果你想要多個實例,你應該使用一個類,而不是模塊級的值。通過將此狀態置於模塊級別,您的供應商表現得非常糟糕。 –
請向供應商提交錯誤。這是由設計打破的。 – Keith