python常用魔术方法概览
构造和初始化
__init__(self, args)
构造函数
__new__(cls)
传入的是类实例
__del__(self)
析构函数,调用 del cls
时会被调用
属性访问控制
__getattr__(self, name)
如果属性已经定义了那么不会再执行__getattr__()了,而是直接通过访问实例字典返回结果,__getattr__()只在访问未定义的属性时被触发
__setattr__(self, name, value)
直接给属性赋值 cls.name = value
, 如果该函数内部内部使用self.name = value
时会产生“无限递归”的错误,正确的方式应该是
1 |
def (self, name, value): |
__delattr__(self, name)
del cls.name
时会被调用
描述器对象
__set__(self, cls, value)
cls.innercls = value
用于类中的其他类对象赋值
__get__(self, cls)
cls.innercls
返回类中其他对象传回的值
__delete__(self, cls)
del cls.innercls
综合实例
1 |
class Meter(object): |
自定义容器(Container)
__len__(self)
len(con)
返回容器长度
__setitem__(self, name, value)
con[name] = value
直接下标赋值
__getitem__(self, name)
con[name]
直接下标访问
__delitem__(name)
del con[name]
删除下标
__iter__(self)
使得容器支持迭代器方式访问 for x in con
__contains__(self, item)
name in con
可以返回布尔值
__missing__(self, name)
容器中没有name时会被调用
上下文管理
with
关键字可实现上下文(环境)管理
__enter__(self)
进入环境时触发
__exit__(self, exception_type, exception_value, traceback)
退出环境时触发,一般用来关闭资源
运算符重载
__eq__(self, other)
重载 =
__ne__(self, other)
重载 !=
__lt__(self, other)
重载 <
__gt__(self, other)
重载 >
__le__(self, other)
重载 <=
__ge__(self, other)
重载 >=
其他
__str__(self)
print(cls)
和 str(cls)
时被调用,必须返回字符str
类型
__repr__(self)
对实例使用repr()
时调用。str()
和repr()
都是返回一个代表该实例的字符串,主要区别在于: str()
的返回值要方便人来看,而repr()
的返回值方便计算机看。
__call__(self, *args, **kwargs)
1 |
class XClass: |
https://segmentfault.com/a/1190000007256392#articleHeader3
python常用魔术方法概览的更多相关文章
- php中的常用魔术方法总结
以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...
- python的魔术方法大全
在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”(魔术方法),例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,这 ...
- [Python3 填坑] 014 类的常用魔术方法举例
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 __init__() 2.2 __new__() 2.3 __call__() 2.4 __str__() 2.5 __repr__() ...
- python类的继承、多继承及其常用魔术方法
继承 一个类可以派生出一个子类,这个子类可以使用父类的属性及方法,也可以在父类的基础上添加自己的独特属性或方法.属性和方法的继承的顺序是先从自己开始,找不到再去找父类,父类没有再找父类的父类,其尽头就 ...
- Python中的常用魔术方法介绍
1.__init__ 初始化魔术方法 触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中) 参数:至少有一个self,接收对象 返回值:无 作用:初始化对象的成员 注意:使用该方式初 ...
- Python面向对象5:类的常用魔术方法
魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发- 魔术方法的统一的特征,方法名被前后各两个下滑线包裹 - 操作类 - `__init__`: 构造函数 - `__new__`: 对象实例 ...
- Python 基础之面向对象之常用魔术方法
一.__init__魔术属性 触发时机:实例化对象,初始化的时候触发功能:为对象添加成员,用来做初始化的参数:参数不固定,至少一个self参数返回值:无 1.基本用法 #例:class MyClass ...
- Python的魔术方法总结
魔术方法:再不需要程序员定义,本身就存在类中的方法就是魔术方法. 魔术方法通常都长这样:__名字__. 1.__str__和__repr__ 为了方便记忆看如下列子 class Course: def ...
- python的魔术方法
什么叫魔术方法: 在python中定义以双下划线开头,有一些python自定义的函数,并且以双下划线为结尾的函数叫做魔法函数 class Company(object): def __init__(s ...
随机推荐
- 扯下Python的super()
注: Python 2.7.x 环境下 今晚搜东西无意中看到这篇Understanding Python super() with __init__() methods. 其实这篇老早就看过了, 不过 ...
- Arcengine对Com组件调用返回错误
将AE对象序列化如果路径不对或者没权限就会出现: 将xml反序列化为AE对象某些电脑上会出现,但是加上trycatch,不理会这个错误,也能反序列化成功:
- SVN一直清理解决
svn作为我们经常使用的版本管理服务器,在使用过程中经常需要通过clean up操作来完成本地文件与服务器文件信息及版本信息同步,然而有时会在执行清理命令时提示“清理失败,请执行清理”,并且提示的中文 ...
- callable和runnable的区别
Runnable接口源码 @FunctionalInterface public interface Runnable { /** * When an object implementing inte ...
- linux下用firefox打开csdn故障解决办法
问题:浏览器打开csdn时博客浏览不全,没有了排版 解决办法: 1.下载一个安装包 命令:epel-release-7-11.noarch.rpm: epel-release-7-11.noarch ...
- centos 7 安装及配置zabbix agent
一.在被监控主机上设置防火墙,允许zabbix-agent的10050端口通过 二.执行yum list |grep zabbix,找到zabbix的agent安装包并安装 三.在 /etc/zabb ...
- 吴裕雄--天生自然C语言开发:文件读写
#include <stdio.h> int main() { FILE *fp = NULL; fp = fopen("/tmp/test.txt", "w ...
- 吴裕雄--天生自然C语言开发:enum(枚举)
enum DAY { MON=, TUE, WED, THU, FRI, SAT, SUN }; enum DAY { MON=, TUE, WED, THU, FRI, SAT, SUN }; en ...
- 计算机数制与IPv4
常用计数:十进制数 1010D.二进制 1010B.十六进制1010H 计算机数制: 数制组成=每一位上的数字*该位的值 IPV4地址一共32bit 人使用点分十进制的方式来进行记忆 IPv6地址一共 ...
- Linux 杀死进程方法大全(kill,killall)
杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志. 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: # kill -pid 注释:标准的kill命令通常 ...