python魔法方法-单目运算及一般算数运算
在比较的魔法方法中,我们讨论了魔法方法其实就是重载了操作符,例如>、<、==等。而这里,我们继续讨论有关于数值的魔法方法。
1.单目运算符或单目运算函数
__pos__(self)
实现一个取正数的操作(比如 +some_object ,python调用__pos__函数)
__neg__(self)
实现一个取负数的操作(比如 -some_object )
__abs__(self)
实现一个内建的abs()函数的行为
__invert__(self)
实现一个取反操作符(~操作符)的行为。
__round__(self, n)
实现一个内建的round()函数的行为。 n 是待取整的十进制数.(貌似在2.7或其他新版本中废弃)
__floor__(self)
实现math.floor()的函数行为,比如, 把数字下取整到最近的整数.(貌似在2.7或其他新版本中废弃)
__ceil__(self)
实现math.ceil()的函数行为,比如, 把数字上取整到最近的整数.(貌似在2.7或其他新版本中废弃)
__trunc__(self)
实现math.trunc()的函数行为,比如, 把数字截断而得到整数.
class Foo(str):
def __new__(cls, x, *args, **kwargs):
return super(Foo, cls).__new__(cls, x) def __init__(self, x):
self.x = x def __pos__(self):
return '+' + self.x def __neg__(self):
return '-' + self.x def __abs__(self):
return 'abs:' + self.x def __invert__(self):
return 'invert:' + self.x a = Foo('scolia')
print +a
print -a
print ~a

2.一般算数运算
__add__(self, other)
实现一个加法.
__sub__(self, other)
实现一个减法.
__mul__(self, other)
实现一个乘法.
__floordiv__(self, other)
实现一个“//”操作符产生的整除操作
__div__(self, other)
实现一个“/”操作符代表的除法操作.(因为Python 3里面的division默认变成了true division,__div__在Python3中不存在了)
__truediv__(self, other)
实现真实除法,注意,只有当你from __future__ import division时才会有效。
__mod__(self, other)
实现一个“%”操作符代表的取模操作.
__divmod__(self, other)
实现一个内建函数divmod()
__pow__
实现一个指数操作(“**”操作符)的行为
__lshift__(self, other)
实现一个位左移操作(<<)的功能
__rshift__(self, other)
实现一个位右移操作(>>)的功能.
__and__(self, other)
实现一个按位进行与操作(&)的行为.
__or__(self, other)
实现一个按位进行或操作(|)的行为.
__xor__(self, other)
实现一个异或操作(^)的行为
class Foo(str):
def __new__(cls, x, *args, **kwargs):
return super(Foo, cls).__new__(cls, x) def __init__(self, x):
self.x = x def __add__(self, other):
return self.x + '+' + other.x def __sub__(self, other):
return self.x + '-' + other.x def __mul__(self, other):
return self.x + '*' + other.x def __floordiv__(self, other):
return self.x + '//' + other.x def __div__(self, other):
return self.x + '/' + other.x def __truediv__(self, other):
return self.x + 't/' + other.x def __mod__(self, other):
return self.x + '%' + other.x def __divmod__(self, other):
return self.x + 'divmod' + other.x def __pow__(self, power, modulo=None):
return self.x + '**' + str(power) def __lshift__(self, other):
return self.x + '<<' + other.x def __rshift__(self, other):
return self.x + '>>' + other.x def __and__(self, other):
return self.x + '&' + other.x def __or__(self, other):
return self.x + '|' + other.x def __xor__(self, other):
return self.x + '^' + other.x a = Foo('scolia')
b = Foo('good')
print a + b
print a - b
print a * b
print a // b
print a / b
print a % b
print divmod(a, b)
print a ** b
print a << b
print a >> b
print a & b
print a | b
print a ^ b

from __future__ import division
....... print a / b

欢迎大家交流
参考资料:戳这里
python魔法方法-单目运算及一般算数运算的更多相关文章
- 1. Python 魔法方法
Python 魔法方法 基础: 如果你想... 所以,你写... Python调用... 初始化一个实例 x = MyClass() x.__init__() 作为一个字符串的"官方&quo ...
- python魔法方法大全
1.python魔法方法详解: python魔法方法是可以修改重载的,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而 ...
- python 魔法方法补充(__setattr__,__getattr__,__getattribute__)
python 魔法方法补充 1 getattribute (print(ob.name) -- obj.func())当访问对象的属性或者是方法的时候触发 class F(object): def _ ...
- with上下文管理 python魔法方法
with语法在Python里很常见, 主要的利好是使用代码更简洁. 常见的使用场景有: 1. 资源对象的获取与释放. 使用with可以简化try...finally ... 2. 在不修改函数代码的前 ...
- python 魔法方法诠释
什么是Python魔法方法 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两个下划线包围来命名的(比如 ini ...
- Python魔法方法总结及注意事项
1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...
- python魔法方法:__getattr__,__setattr__,__getattribute__
python魔法方法:__getattr__,__setattr__,__getattribute__ 难得有时间看看书....静下心来好好的看了看Python..其实他真的没有自己最开始想的那么简单 ...
- python魔法方法-反射运算和增量运算
反射运算 什么是反射运算符,其实就是反转了两个对象,下面先看一个普通运行符的实现: class Foo(object): def __init__(self, x): self.x = x def _ ...
- python 魔法方法
I am not a creator, I just a porter. Note: Everything is object in python. 对于Python来说一切都是对象,也就是函数的参数 ...
随机推荐
- Windows10 中在指定目录下启动Powershell
(1)首先进入该目录: (2)按住shift键,且同时在该目录空白处鼠标右击,打开右键菜单: (3)此时可以发现,在右键菜单中,多了一项,叫做[在此处打开Powershell窗口(s)],点击该项: ...
- 006_ssl监测及评分
https://testssl.sh/ 一. https://www.ssllabs.com/ssltest/analyze.html?d=jyall.com 监测下jyll.com,不忍直视啊! 二 ...
- CentOS 6.3下NFS安装配置
CentOS 6.3下NFS安装配置 一.环境介绍 NFS服务器:CentOS6.3 192.168.8.20 NFS客户端:CentOS6.5 192.168.8.39 二.服务器端安装配置 ...
- GitHub上优秀的Go开源项目
近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用.技巧以及相关工具和方法.我把他们整理发出来,大家有 ...
- PYTHON-UDP
1.TCP 和 UDP 发送数据时的流程 ***** 解释 为何TCP是可靠的 是因为发送数据后必须收到确认包 2. UDP的模板代码 ***** 1.UDP协议: (数据报协议) 特点: 无连接 优 ...
- 用java实现邮件发送验证码
java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好.所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬 ...
- 中文多分类 BERT
直接把自己的工作文档导入的,由于是在外企工作,所以都是英文写的 Steps: git clone https://github.com/google-research/bert prepare dat ...
- Windows 2012 安装 Oracle 11g 报错:[INS-13001]环境不满足最低要求。
问题: 在Windows Server 2012 安装上 Oracle 11g 时,安装程序报错:[INS-13001]环境不满足最低要求. 分析原因: Oracle 在发布 11g时,Winodws ...
- Luogu P4945 【最后的战役】
本来以为做法一样,就是少带个$log$,结果发现看不懂出题人的题解(我好菜啊) 那就自己写一篇吧 比较简单的$DP$思路 状态定义: 前两个转移很好处理,第三个好像就不好办了 不妨暴力定义进状态里 设 ...
- gcd,lcm
定理:gcd(a,b)*lcm(a,b)=a*b; 更相损减术:gcd(a,b)=gcd(b,a-b)=gcd(a,a-b) 欧几里得算法:gcd(a,b)=gcd(b,a mod b) 复杂度O(l ...