python magic_method
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python magic_method相关的知识,希望对你有一定的参考价值。
总的来说python的 magic method 主要是围绕一些类中形如 __xx__ 的样子的方法。、
1 构造和初始化
1.1 __new__ 用来创建类并返回这个类的实例。
1.2 __init__ 将传入的参数来初始化该实例。
1.3 __del__ 在对象生命周期结束的时候,该方法会被调用。
2 控制属性访问
2.1 __getattr__(self, item) 当获取一个不存在的字段时候会被调用。你也可以定义调用时候的处理方式 如下:
class Desc(object): def __init__(self, name): self.name = name def __getattr__(self, item): if item == ‘mmc‘: return ‘dunk‘ return ‘nothing‘
2.2 __setattr__(self, key, value)
2.3 __delattr__ 删除一个属性
2.4 __getattribute__(self, item) 当访问字段的时候会被无条件调用。访问字段首先调用 __getattribute__ 方法,如果该方法未能处理字段才调用 __getattr__方法 , 如下:
class Desc(object): def __init__(self, name): self.name = name def __getattr__(self, item): return ‘nothing‘ def __getattribute__(self, item): try: print ‘hahha‘ return super(Desc, self).__getattribute__(item) except AttributeError: return ‘default‘ desc = Desc(‘wwt‘) print desc.name print desc.wwt [out:] hahha #每次调用都会访问 __getattribute__ 方法 wwt hahha default # 如果 __getattribute__ 可以处理, 就不会调用__getattr__ 方法
以上是关于python magic_method的主要内容,如果未能解决你的问题,请参考以下文章