1
我想要在Python中創建和設置屬性屬性的值。Python中的可鏈接動態屬性
下面是一個例子:
book = Dynamic()
book.chapter1.section2 = 'abc'
我的書的對象不具有第一章屬性,所以當SETATTR被稱爲它必須創建。我已經得到這個工作:
book = Dynamic()
book.chapter1 = SubDynamic()
book.chapter1.section2 = 'section 2'
我不能然而,弄清楚如何加入成一條線沒有得到一個錯誤,告訴我,第一章不存在。
這是我得到的。
class Dynamic(object):
def __setattr__(self, name, value):
sn = SubDynamic(value)
self.__dict__[name] = v
class SubDynamic(object):
def __init__(self, attr):
value = ""
self.attr = value
def __setattr__(self, name, value):
self.__dict__[name] = value
if __name__ == '__main__':
book = Dynamic()
book.chapter1.section2 = 'abc'
簡單的比我能想到 - 我只會進一步解釋(其它reders /的OP),其__getattrr__只是在實例中不存在屬性時調用。因此,進一步讀取動態創建的屬性或其他屬性不會導致它被此方法破壞。 (檢查Python文檔中的__getattribute__'來控制每個屬性訪問) – jsbueno