簡體   English   中英

使用基類分配子類屬性時出現Python類繼承問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM