1、定義一個類
class MyObj: def __init__(self, name, age): self.name = name self.age = age def myFunc(self): pass mo = MyObj('Boby', 24) print(mo) print(mo.__dict__)
#結果 <__main__.MyObj object at 0x000000815C364518> {'name': 'Boby', 'age': 24}
從以上代碼來看;直接使用mo.__dict__即可獲取該實例的屬性值;
2、還可以設置屬性
還是上面的類;
mo = MyObj('Boby', 24) # 修改屬性 mo.__dict__['name'] = 'jason' mo.__dict__['age'] = 42 print(mo.__dict__) #結果 {'name': 'jason', 'age': 42}
3、添加屬性
mo = MyObj('Boby', 24) mo.__dict__['name'] = 'jason' mo.__dict__['age'] = 42 #添加屬性 mo.__dict__['grade'] = 3 mo.__dict__['address'] = 'BeiJing' print(mo.__dict__) #結果 {'name': 'jason', 'age': 42, 'grade': 3, 'address': 'BeiJing'}
4、總結
我們知道,C、Java等面向對象的編程語言,在進行類的初始化時,對與類的限制是很嚴格的,這樣做的好處是安全,
我們試想一下,如果創建的一個類在任何情況下,會被任何外部或者內部方法調用,並且可以輕易改動它,這樣的做法是很危險的。
比如上面的mo實例,我們執行下面的代碼:
mo.__dict__.clear()
print(mo.__dict__)
我們創建的實例成了空白;
因此,盡量不要使用obj.__dict__這個對象來設置鍵值對或者要小心使用;