python class 中各种"__"的隐藏使用

Class

Python中也有类的概念,类中的成员函数不支持重载(overloading method),但支持重写(overiding method)。Python Class中还有很多隐含的成员函数,这些函数的首尾都是“__”开头结尾的。

隐藏的用法

构造与析构

new

创建对象时调用,返回当前对象的一个实例。

1
__new__(cls, *args, **kwargs)

init

对象建立后,第一个被调用的函数,相当于c++中的构造函数

1
__init__(self, *args, **kwargs)

del

对象销毁前,最后调用的函数,相当于c++中的析构函数

1
__del__(self, *args, **kwargs)

call

重写call方法后,对象当函数来使用,相当于重载了括号运算符

1
__call__(self, *args, **kwargs)

属性操作

getattr

获取属性

1
__getattr__(self, key)

setattr

创建或设置属性

1
__setattr__(self, key, value)

delattr

删除属性

1
__delattr__(self, key)

str

对象转换字符串函数

1
__str__(self)

repr

str()出来的是给人看的,repr()出来的是给Python看的,可以通过eval()重新变回一个Python对象。

1
__repr__(self)

参考&鸣谢