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