在比较的魔法方法中,我们讨论了魔法方法其实就是重载了操作符,例如>、<、==等。而这里,我们继续讨论有关于数值的魔法方法。

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. 1. Python 魔法方法

    Python 魔法方法 基础: 如果你想... 所以,你写... Python调用... 初始化一个实例 x = MyClass() x.__init__() 作为一个字符串的"官方&quo ...

  2. python魔法方法大全

    1.python魔法方法详解: python魔法方法是可以修改重载的,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而 ...

  3. python 魔法方法补充(__setattr__,__getattr__,__getattribute__)

    python 魔法方法补充 1 getattribute (print(ob.name) -- obj.func())当访问对象的属性或者是方法的时候触发 class F(object): def _ ...

  4. with上下文管理 python魔法方法

    with语法在Python里很常见, 主要的利好是使用代码更简洁. 常见的使用场景有: 1. 资源对象的获取与释放. 使用with可以简化try...finally ... 2. 在不修改函数代码的前 ...

  5. python 魔法方法诠释

    什么是Python魔法方法 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法"的特殊方法. 它们经常是两个下划线包围来命名的(比如 ini ...

  6. Python魔法方法总结及注意事项

    1.何为魔法方法: Python中,一定要区分开函数和方法的含义: 1.函数:类外部定义的,跟类没有直接关系的:形式: def func(*argv): 2.方法:class内部定义的函数(对象的方法 ...

  7. python魔法方法:__getattr__,__setattr__,__getattribute__

    python魔法方法:__getattr__,__setattr__,__getattribute__ 难得有时间看看书....静下心来好好的看了看Python..其实他真的没有自己最开始想的那么简单 ...

  8. python魔法方法-反射运算和增量运算

    反射运算 什么是反射运算符,其实就是反转了两个对象,下面先看一个普通运行符的实现: class Foo(object): def __init__(self, x): self.x = x def _ ...

  9. python 魔法方法

    I am not a creator, I just a porter. Note: Everything is object in python. 对于Python来说一切都是对象,也就是函数的参数 ...

随机推荐

  1. 【docx4j】docx4j操作docx,实现替换内容、转换pdf、html等操作

    主要是想要用此功插件操作docx,主要的操作就是操作段落等信息,另外,也想实现替换docx的内容,实现根据模板动态生成内容的效果,也想用此插件实现docx转换pdf. word的格式其实可以用xml来 ...

  2. springMVC入门(一)

    1.   SpringMVC入门 1.1SpringMVC是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出 ...

  3. POI导出带格式的Excel模板——(六)

    Jar包

  4. 【逆向知识】动态调试技巧-C++代码逆向

    1.C++类代码的特点 寄存器ECX传参时一般用作this指针(对象地址)或是计数器. 有ecx传参的call,是成员函数,构造函数,析构函数 能访问成员变量的函数都会有ecx传参 静态函数.全局函数 ...

  5. freeRTOS中文实用教程4--资源管理互斥

    1.前言 访问一个被多任务共享,或是被任务与中断共享的资源时,需要采用”互斥”技术以保证数据在任何时候都保持一致性.这样做的目的是要确保任务从开始访问资源就具有排它性,直至这个资源又恢复到完整状态 F ...

  6. freeRTOS中文实用教程3--中断管理之延迟中断处理

    1.前言 嵌入式实时操作系统需要对整个系统环境产生的事件作出响应.可以采用中断方式也可以采用轮询方式来进行处理.如果采用中断方式,则希望ISR(中断服务例程)的处理时间越短越好. 注:必须说明的是,只 ...

  7. 如何读取Linux键值,输入子系统,key,dev/input/event,dev/event,C语言键盘【转】

    转自:https://blog.csdn.net/lanmanck/article/details/8423669 相信各位使用嵌入式的都希望直接读取键值,特别是芯片厂家已经提供input驱动的情况下 ...

  8. FreeSWITCH与PSTN对接

    FreeSWITCH与PSTN电话系统对接设定 一.环境介绍 我们目前使用模拟的话机连接到电信运营商,购买他们配套的电话总机,勉强实现了公司的基本通话.但是客户电话总机系统以及升级添加新的应用不但费用 ...

  9. vue系列之vue-resource

    vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应.也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且 ...

  10. 浏览器的userAgent归纳

    IE IE6 User-Agent:Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.2) IE7 User-Agent:Mozilla/4.0 (compat ...