文章详情页
python - object.__setattr__和直接设置属性有什么不同吗?
浏览:152日期: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. mysql - 看这条sql有可能被注入吗2. vue.js - vue获取mongodb中的数据起初显示未定义,但还是可以渲染3. css3 - css flex 子元素居中4. javascript - 微信报redirect_uri参数错误5. javascript - 按钮链接到另一个网址 怎么通过百度统计计算按钮的点击数量6. head标签里的css文件可以设置body标签里的图片高度7. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?8. javascript - 微信“分享到朋友圈”自定义分享内容,无法成功调用jssdk接口,不知为何9. html5 - input type=’file’ 上传获取的fileList对象怎么存储于浏览器?10. 【小白问题】这行python命令行程序是什么意思?
排行榜
