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
View Code

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__ 方法
View Code

 

以上是关于python magic_method的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

python [代码片段]一些有趣的代码#sort

使用 Python 代码片段编写 LaTeX 文档

python 机器学习有用的代码片段