[英]Python class inheritance issue occurs when using base class to assign attributes of subclass
當使用基類創建子類屬性時,我收到一個錯誤,即子類沒有我在基類方法中創建的成員。 代碼如下所示
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' object has no attribute 'id'。
有沒有什么解決方案可以使用基類在python中分配子類屬性?
這與繼承無關。 您已將該值分配給a.key
而不是a.id
。 事實上,您已將所有值分配給a.key
。
我相信你想要setattr(self, key, data[key])
代替self.key = data[key]
。 或者只是完全取消循環並執行self.__dict__.update(data)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.