文章詳情頁
python - object.__setattr__和直接設置屬性有什么不同嗎?
瀏覽:86日期: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. python - 關于beautifulsoup獲取文檔內容2. mysql - 僅僅只是把單引號與反斜杠轉義不用prepare statement能否避免sql注入?3. Python爬取網頁requests亂碼4. java - springMVC配置的controller無法返回jsp文件5. javascript - 項目用IE瀏覽器打開修改前端內容,后臺數據修改了,但是前端頁面內容不變,用谷歌瀏覽器測試前端頁面可以刷新,求大神解決。6. MySQL 中怎么修改字段名,不更改屬性?7. 如何通過Java編碼生成Jmeter儀表板報告。(不是Windows或Shell命令)8. javascript - 看一些高手寫代碼單獨用 “$”和“_” 來表示變量,什么時候單獨使用這兩個字符?9. nginx - openresty無法使用require10. 面向對象編程 - java動態加載和類型轉換問題?
排行榜
