你好,我正嘗試在Python中使用從Creating constant in Python(在鏈接的第一個答案中)找到的這個例子創建一個常量,並使用實例作爲模塊。如何在python中模擬常量變量
的第一個文件const.py具有
# Put in const.py...:
class _const:
class ConstError(TypeError): pass
def __setattr__(self,name,value):
if self.__dict__ in (name):
raise self.ConstError("Can't rebind const(%s)"%name)
self.__dict__[name]=value
import sys
sys.modules[__name__]=_const()
一部分劃入到test.py了例如。
# that's all -- now any client-code can
import const
# and bind an attribute ONCE:
const.magic = 23
# but NOT re-bind it:
const.magic = 88 # raises const.ConstError
# you may also want to add the obvious __delattr__
雖然我因爲我使用python 3取得2個改變我仍然得到錯誤
Traceback (most recent call last):
File "E:\Const_in_python\test.py", line 4, in <module>
const.magic = 23
File "E:\Const_in_python\const.py", line 5, in __setattr__
if self.__dict__ in (name):
TypeError: 'in <string>' requires string as left operand, not dict
我不明白的線5的錯誤是什麼。誰能解釋一下?更正這個例子也不錯。提前致謝。
+1 「你真的需要這個」。 –
@gnibbler謝謝,我真的不需要它,但它很高興知道。我仍然在學習任何我能。 :) – BugShotGG
@gnibbler奇怪的事情。如果我嘗試在python IDLE中重新綁定它,但在eclipse中它只是重新綁定新值而沒有任何錯誤,則會出現錯誤。嗯日食或東西的bug? – BugShotGG