文章詳情頁
python - object.__setattr__和直接設置屬性有什么不同嗎?
瀏覽:117日期:2022-09-18 17:58:49
問題描述
在werkzeug中有這樣的定義:
class Local(object): __slots__ = (’__storage__’, ’__ident_func__’) def __init__(self):object.__setattr__(self, ’__storage__’, {})object.__setattr__(self, ’__ident_func__’, get_ident)
此處的__init__方法里,使用self.__storage__ = {}的話是否效果一樣呢?
問題解答
回答1:效果其實是一樣的。比如object.a = 1最終也是調用self.__setattr__(’a’, 1);只不過你自己重寫父類(object)的__setattr__方法時,可以加上自己定義的一些規則,比如:
def __setattr__(self, name, value): if name == ’xxx’:print ’Hi, I can’t do it.’ else:super(Local, self).__setattr__(name, value)
相關文章:
1. apache - 想把之前寫的單機版 windows 軟件改成網絡版,讓每個用戶可以注冊并登錄。類似 qq 的登陸,怎么架設服務器呢?2. css3 - Typecho 后臺部分表單按鈕在 Chrome 下出現靈異動畫問題,求解決3. java - 阿里的開發手冊中為什么禁用map來作為查詢的接受類?4. java - 關于i++的一個題目5. javascript - 為什么嵌套的Promise不能按預期捕獲Exception?6. webgl - android上類似汽車之家的3d全景照片怎么實現7. javascript - 編程,算法的問題8. java - HTTPS雙向認證基礎上有無必要再進行加簽驗簽?9. ubuntu apt-get install update 無法更新10. node.js - win7下,npm 無法下載依賴包,淘寶鏡像也裝不上,求幫忙???
排行榜
