文章详情页
python - object.__setattr__和直接设置属性有什么不同吗?
问题描述
在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. javascript - 手机点击input时,button会被顶上去?求解决!!!2. HTML5禁止img预览该怎么解决?3. dologin说是没有定义4. javascript - 关于js原生事件的绑定与解除绑定5. mysql - 数据库建字段,默认值空和empty string有什么区别 1106. angular.js - 在ionic下,利用javascript导入百度地图,pc端可以显示,移动端无法显示7. 代码如下,java用BigDecimal四舍五入怎么还有问题呀?哪种方式是完全没有问题的?8. python3 脚本调用shell 指令如何获得返回值9. mybatis - Java关于Mysql的随机id生成10. javascript - 函数声明和匿名函数有什么不同?(前端小白求助。。)
排行榜