雖然編碼一個新的類與Spyder的 IDE,並使用pylint的檢查的最終結果,我遇到了錯誤信息的使用__dict__的(但代碼按預期工作,沒有錯誤)。Python化:在功能自.__ init__類
上下文:在構造函數中,我想創建新成員(相當多)。通常情況下,這些都足以很少,所以我用這個編碼:
class MyClass():
def __init__(self):
self.a = ...
self.b = ...
但在許多成員的情況下(比方說10),全部設置爲相同的初始值(假設他們都是字典()) ,我很想這樣做:
class MyClass():
def my_method(self):
print self.c
錯誤與:
class MyClass():
def __init__(self):
_vars = ["a", "b", "c", ...]
for _var in _vars:
self.__dict__[_var] = dict()
在類
而且,我是用指的一員pylint的(在Spyder的):
當使用這個文件pylint的,我有一個錯誤信息說:
MyClass.my_method:的 'MyClass的' 實例沒有「c'member 。
但是,代碼運行良好,沒有錯誤,即。我可以毫無問題地訪問成員'c'。
問題:這是一個正確的編碼,或者我應該避免這樣的初始化成員方法?
我不知道你想用'MyClass'到底該怎麼做,但它聽起來像是你可能會投資於一個'collections.defaultdict( )'。請參閱http://docs.python.org/library/collections.html#collections.defaultdict。仍然對其他人不得不說的修改自我.__ dict__感興趣,而不是創建恰好是字典的實例變量。 – Noah 2012-02-09 03:01:50
@Noah謝謝Noah,我不知道defaultdict類。這聽起來很有趣!我現在看到我已經爲我的代碼編寫了幾個「工具」,這些工具很可能是在一些更好的編碼的Python模塊中創建的(例如,我創建了一個簡單的東西,似乎有點像defaultdict,儘管不太複雜)。非常感謝。 – mhavel 2012-02-09 05:35:06