我正在嘗試爲需要一堆文件的類編寫一個函數,並將它們作爲屬性添加到類中。Python中的動態類屬性?
現在我有一些類foo
,另一類bar
。我想基本上檢查一個字符串列表(這是簡化的),並將這些字符串中的每一個添加爲foo
的屬性,並且這些屬性中的每一個屬於bar
。所以foo
有一堆bar
類型的屬性。現在我已經使用python的__setattr__
完成了這個工作,這很好。真正的問題是我需要在bar
中設置一個屬性,並且我需要爲每個foo
屬性執行此操作。
所以現在,我有一個循環:
for name in list:
self.__setattr__(name, bar(a, b, ..))
self.name.a = 123
不幸的是,這個屬性被讀成「名」,而不是在列表中的值。 所以我得到一個錯誤,如:foo object has no attribute name
。 我需要的是一些動態訪問。我知道getattr
,但據我所知,這返回一個值,我不認爲適用於我的情況。你們知道什麼可以在這裏工作嗎?
編輯:我也可以添加我需要設置爲構造函數參數的東西。我不想這樣做的原因是我認爲它有點重載構造函數,並使其變得混亂,特別是因爲參數名稱會很長。這就是說,如果有必要,我可以做到這一點。
你的意思'GETATTR(個體經營,名稱)。A = 123'?真的不清楚爲什麼你不能通過'123'進入課堂,你可能會遇到更大的結構問題。你也應該使用'setattr'而不是調用'__setattr__'。 – jonrsharpe
是的,你是對的,因爲某些原因,我在思考事物並被'self.name.attribute'的概念所困住。 – Jpwang