当使用基类创建子类属性时,我得到一个错误,子类没有我在基类方法中创建的成员。代码如下所示
class Base(object):
def setAttributes(self, data):
for key in data:
self.key = data[key]
class Sub(Base):
pass
data = {'id':1, 'name': 'Name'}
a = Sub()
Base.setAttributes(a, data)
print(a.id)
错误消息是:AttributeError:'Sub'对象没有属性'id'。
在python中有没有使用基类来分配子类属性的解决方案?你知道吗
这与继承无关。您已将值赋给
a.key
而不是a.id
。事实上,您已将所有值赋给a.key
。你知道吗我相信你想用
setattr(self, key, data[key])
代替self.key = data[key]
。或者干脆完全取消循环并执行self.__dict__.update(data)
。你知道吗相关问题 更多 >
编程相关推荐