【python】python魔法方法(待填坑)

参考博文:http://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html

参考博文英文原版:http://www.rafekettler.com/magicmethods.html

构造方法:

1、__new__:第一个调用,取下cls参数,并且把所有其他参数传给__init__,只适用于继承不改变的类比如int, tuple,string。

2、__init__:初始化方法

3、__del__:销毁器,例如当销毁对象的时候关闭对象打开的文件。

比较操作符:

1、__cmp__:如果所有比较标准比较统一,可以通过这个实现,否则要依次实现其他的比较操作符。(self>other返回1)

2、__eq__, __ne__, __lt__, __gt__, __le__, __ge__: =, !=, <, >, <=, >=

3、functools中有一个类装饰器,只要定义__eq__和另一个操作符,就可以帮助实现比较方法,@total_ordering。

数值操作符:一元

1、__pos__:取正

2、__neg__:取负

3、__abs__:绝对值

4、__invert__:取反操作符~

5、__round__:近似位数

6、__floor__:向下取整

7、__ceil__:向上取整

8、__trunc__:取距离0最近的整数

数字操作符:二元

1、__add__

2、__sub__

3、__mul__

4、__floordiv__://

5、__div__:/

6、__mod__

7、__divmod__

时间: 2024-10-10 10:53:41

【python】python魔法方法(待填坑)的相关文章

Python 常用魔法方法(下)

Python 常用魔法方法(下) 回顾 魔法方法是 Python 内置方法, 不需要我们手动调用, 它存在的目的是给 解释器 调用的. 比如我们在写 "1 + 1 " 的时候, 这个 "+ " 就会自动调用内置的魔法方法 "__ add__" . 几乎每个魔法方法, 都有一个对应的内置函数或运算符. 当我们使用这些方法去操作数据时, 解释器会自动调用这些对应的魔法方法. 也可以理解为, 重写内置函数, 如果改变的话. 具体的魔法方法等. 可以去看

21 python的魔法方法(转)

魔法方法 含义   基本的魔法方法 __new__(cls[, ...]) 1. __new__ 是在一个对象实例化的时候所调用的第一个方法2. 它的第一个参数是这个类,其他的参数是用来直接传递给 __init__ 方法3. __new__ 决定是否要使用该 __init__ 方法,因为 __new__ 可以调用其他类的构造方法或者直接返回别的实例对象来作为本类的实例,如果 __new__ 没有返回实例对象,则 __init__ 不会被调用4. __new__ 主要是用于继承一个不可变的类型比如

python字典fromkeys()方法中的坑

自定操作中的fromkeys()方法接收两个参数,第一个参数为一个可迭代对象,作为返回字典的key,第二个参数为value,默认为None,具体用法如下: li = [1,2,3] dic1 = dict.fromkeys(li) dic2 = dict.fromkeys(li,[]) print(dic1) # {1: None, 2: None, 3: None} print(dic2) # {1: [], 2: [], 3: []} 此时我为dic2中key为1的列表增加一个元素'test

python中魔法方法__str__与__repr__的区别

提出问题 当我们自定义一个类时,打印这个类对象或者在交互模式下直接输入这个类对象按回车,默认显示出来的信息好像用处不大.如下所示 In [1]: class People: ...: def __init__(self, name, sex): ...: self.name = name ...: self.sex = sex ...: In [2]: p = People('xiaoming', 'male') In [3]: p Out[3]: <__main__.People at 0x7

python之魔法方法

is 和 == 的关系 ''' == 值相等 值运算 is 内存地址相等 身份运算 is 要求更苛刻 不仅要求值相等,还要求内存地址相同 ''' a = 111 b = 111 a == b # 值相等 值运算使用 a is b # 值相等内存地址不相等使用 is 和 isinstance的关系 class A: pass class B(A): pass b = B() print(isinstance(b, B)) print(isinstance(b, A)) print(issubcla

python中的魔法方法

1.什么是魔法方法? 魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的.它们经常是两个下划线包围来命名的(比如 __init__,__lt__),Python的魔法方法是非常强大的,所以了解其使用方法也变得尤为重要! 2.__init__(self[, ...]),__new__(cls[, ...]),__del__(self) __init__ 构

python 魔法方法(学习过程的笔记)

有小伙伴会问,什么是python的魔法方法,python的魔法方法有什么用呢, 它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两个下划线包围来命名的. 我感觉魔法方法很牛逼的, 目前我们常见的魔法方法大致可分为以下几类: 构造与初始化 类的表示 访问控制 比较操作 容器类操作 可调用对象 Pickling序列化 在我们写python中最常见的就是__init__,这是python的构造方法,这是初始化对象,定义一个对象的初始化的值,_

python 魔法方法之:__getitem__ __setitem__ __delitem__

python的魔法方法: 在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法__getitem__.__setitem__.__delitem__.__len__方法去模拟. __getitem__(self,key):返回键对应的值. __setitem__(self,key,value):设置给定键的值 __delitem__(self,key):删除给定键对应的元素. __len__():返回元素的数量 下面我们模仿dict创建自己的类: class MyDic

python_魔法方法(二):算术运算

python2.2之后,对类和类型做了同意,将int().float().str().list().touple()这些BIF转换为工厂函数 >>> type(len) <class 'builtin_function_or_method'> >>> type(int) <class 'type'> >>> type(dir) <class 'builtin_function_or_method'> >>