class Base:
#has no attributes of its own
def __init__(self, params):
for key in params:
if hasattr(self, key):
self[key] = params[key]
def __setitem__(self, key, value):
self[key] = value
class Child(Base):
prop1 = None
prop2 = None
然而,這將進入無限遞歸作爲self[key] = value
遞歸調用self.__setitem__
我的目標是能夠通過AA字典爲Child()
構造這樣
params = dict(
prop1 = "one",
prop2 = "two"
)
c = Child(params)
c.prop1 #"one"
c.prop2 #"two"
有許多不同的類,像Child,但有不同的字段。 params
是來自json blob的字典。我想用Base
作爲通用填充器的不同類,如Child
我已經看到了使用內部dict
來完成我要問的方法,但它是我的理解(我的品牌新的Python),這將阻止通過點符號訪問方法(我寧願避免)。
考慮到'hasattr',你的要求比你的建議更復雜。在孩子的內部,你有一些類級別的屬性'prop1'和'prop2',但試圖初始化'field1'和'field2',這些應該是不同的? –
你知道類和實例屬性之間的區別嗎? – martineau
對不起,他們應該是「propX」。編輯 – thedarklord47