Lyn*_*Lab 6 python coding-style
我刚刚阅读帖子如何在python中通过__dict__分配新的类属性?@bruno desthuilliers有一条评论说:
不应该直接调用魔术方法 - 它们在这里作为运算符或泛型函数的实现.在这种情况下,惯用的解决方案是使用
setattr(obj, name, value).
setattr的情况似乎超出了他自己的评论的范围:不是运算符,也不是通用函数的实现.
有人可以解释这个评论吗?为什么我更喜欢一个呢?
在哪种情况下最好使用obj.__setattr__(name, value)?
Mar*_*ers 16
你应该经常使用setattr(),评论者是非常正确的.
__setattr__例如,并非所有类型都实现,setattr()如果类型允许设置属性,它将正常工作.
双下划线方法是钩子,可以使您的自定义类实现自定义行为.如果存在,Python API将使用这些钩子,如果缺少钩子,则回退到默认行为.通过绕过API,您将不得不在自己的代码中实现回退.
您只需要__setattr__在实现子类时直接调用,然后最好通过super()调用:
def Foo(Bar):
def __setattr__(self, attr, value):
# do something with attr and value
super(Foo, self).__setattr__(attr, value)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |