python中魔法属性和魔法方法
2015-10-11 18:13
691 查看
1.魔法方法|魔法属性
在python中,有的名称会在前面和后面都加上两个下划线,例如__future__、__init__、__del__以及__new__等等,这些特殊的名称,在python中就称为魔法方法或魔法属性。
例如:
(1)__new__ 是创建类的对象的函数,相当于C++中构造函数。
(2)__init__ 会在__new__之后被调用,用来初始化对象的。
(3)__del__ 是对象将要被销毁的时候被调用,用来将对象所占用的内存资源释放给操作系统,相当于C++中的析构函数。
2.魔法方法和魔法属性的使用
在python中,魔法方法和一些用户操作是对应的。一些魔法方法直接和内建函数对应,这种情况下,如何调用它们是显而易见的。然而,另外的情况下,调用魔法方法的途径并不是那么明显。如下列举除了一些常见的魔法方法的使用场景:
详细内容参见:《Python魔法方法指南》
在python中,有的名称会在前面和后面都加上两个下划线,例如__future__、__init__、__del__以及__new__等等,这些特殊的名称,在python中就称为魔法方法或魔法属性。
例如:
(1)__new__ 是创建类的对象的函数,相当于C++中构造函数。
(2)__init__ 会在__new__之后被调用,用来初始化对象的。
(3)__del__ 是对象将要被销毁的时候被调用,用来将对象所占用的内存资源释放给操作系统,相当于C++中的析构函数。
2.魔法方法和魔法属性的使用
在python中,魔法方法和一些用户操作是对应的。一些魔法方法直接和内建函数对应,这种情况下,如何调用它们是显而易见的。然而,另外的情况下,调用魔法方法的途径并不是那么明显。如下列举除了一些常见的魔法方法的使用场景:
魔法方法 | 什么时候被调用 | 解释 |
---|---|---|
__new__(cls [,...]) | instance = MyClass(arg1, arg2) | __new__在实例创建时调用 |
__init__(self [,...]) | instance = MyClass(arg1,arg2) | __init__在实例创建时调用 |
__cmp__(self) | self == other, self > other 等 | 进行比较时调用 |
__pos__(self) | +self | 一元加法符号 |
__neg__(self) | -self | 一元减法符号 |
__invert__(self) | ~self | 按位取反 |
__index__(self) | x[self] | 当对象用于索引时 |
__nonzero__(self) | bool(self) | 对象的布尔值 |
__getattr__(self, name) | self.name #name不存在 | 访问不存在的属性 |
__setattr__(self, name) | self.name = val | 给属性赋值 |
__delattr_(self, name) | del self.name | 删除属性 |
__getattribute__(self,name) | self.name | 访问任意属性 |
__getitem__(self, key) | self[key] | 使用索引访问某个元素 |
__setitem__(self, key) | self[key] = val | 使用索引给某个元素赋值 |
__delitem__(self, key) | del self[key] | 使用索引删除某个对象 |
__iter__(self) | for x in self | 迭代 |
__contains__(self, value) | value in self, value not in self | 使用in进行成员测试 |
__call__(self [,...]) | self(args) | “调用”一个实例 |
__enter__(self) | with self as x: | with声明的上下文管理器 |
__exit__(self, exc, val, trace) | with self as x: | with声明的上下文管理器 |
__getstate__(self) | pickle.dump(pkl_file, self) | Pickling |
__setstate__(self) | data = pickle.load(pkl_file) | Pickling |
相关文章推荐
- Python魔法方法指南
- 【Python】Learn Python the hard way, ex24 函数综合练习
- leetcode之Largest Number
- PYTHON getattr setattr hasattr delattr内置函数
- 【Python】Learn Python the hard way, ex21 函数返回值return
- python 将中文转拼音后填充到url做参数并写入excel
- Python格式化输出
- Python格式化输出
- 【Python】Learn Python the hard way, ex20 用函数读文件readline
- 关于python测试webservice接口的视频分享
- 关于python测试webservice接口的视频分享
- 关于python测试webservice接口的视频分享
- 【Python】Learn Python the hard way, ex19 函数和变量
- 将 Sublime 3 打造成 Python/Django IDE
- 【Python】:如何安装及编译python程序
- python stock 1
- 【Python】Learn Python the hard way, ex18 def函数
- python编译器IDLE的问题。
- python 编码问题
- Python基础