1. def __add__(self, *args, **kwargs): # real signature unknown
  2. """ Return self+value. """
  3. pass

返回相加数值

  1. def __alloc__(self): # real signature unknown; restored from __doc__
  2. """
  3. B.__alloc__() -> int
  4.  
  5. Return the number of bytes actually allocated.
  6. """
  7. return 0

返回实际占用字节数

  1. def __eq__(self, *args, **kwargs): # real signature unknown
  2. """ Return self==value. """
  3. pass

相当于==

  1. def __ge__(self, *args, **kwargs): # real signature unknown
  2. """ Return self>=value. """
  3. pass

相当于 >=

  1. def __gt__(self, *args, **kwargs): # real signature unknown
  2. """ Return self>value. """
  3. pass

判断self是否大于 为真返回True,假返回False

  1. def __abs__(self, *args, **kwargs): # real signature unknown
  2. """ abs(self) """
  3. pass

实现了内置函数abs()  取绝对值

  1. def __bool__(self, *args, **kwargs): # real signature unknown
  2. """ self != 0 """
  3. pass

判断是否不等于0 为真返回True,假返回False

  1. def __divmod__(self, *args, **kwargs): # real signature unknown
  2. """ Return divmod(self, value). """
  3. pass

实现了内置函数divmod 取两个值的除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

  1. def __float__(self, *args, **kwargs): # real signature unknown
  2. """ float(self) """
  3. pass

实现了内置float函数  float()函数用于将整数和字符串转换成浮点数。

  1. def __floordiv__(self, *args, **kwargs): # real signature unknown
  2. """ Return self//value. """
  3. pass

相当于除 取整数 int

  1. def __format__(self): # real signature unknown; restored from __doc__
  2. """
  3. complex.__format__() -> str
  4.  
  5. Convert to a string according to format_spec.
  6. """
  7. return ""

我自己的理解是默认调用时 例如

a="a"

b = a.__format__(str(4))

print(b) # b="a   "

print(len(b)) #

类似于format 默认以空格连接

下面是其他人的调用方法将__format__重写 使其拼接的不是空格

__format__()传参方法:someobject.__format__(specification)

  specification为指定格式,当应用程序中出现"{0:specification}".format(someobject)或format(someobject, specification)时,会默认以这种方式调用

  当specification为" "时,一种合理的返回值是return str(self),这为各种对象的字符串表示形式提供了明确的一致性

  注意,"{0!s}".format()和"{0!r}".format()并不会调用__format__()方法,他们会直接调用__str__()或者__repr__()

  1. def __getattribute__(self, *args, **kwargs): # real signature unknown
  2. """ Return getattr(self, name). """
  3. pass

实习了getattr 函数用于返回一个对象属性值。可以设定默认值

  1. def __getnewargs__(self, *args, **kwargs): # real signature unknown
  2. pass

取出系列化恢复后的状态

  1. def __hash__(self, *args, **kwargs): # real signature unknown
  2. """ Return hash(self). """
  3. pass
  1. __hash__方法就是将其id/16取整后作为integer返回
  1. def __init__(self, real, imag=None): # real signature unknown; restored from __doc__
  2. pass

初始化一个实例

  1. def __int__(self, *args, **kwargs): # real signature unknown
  2. """ int(self) """
  3. pass

内置函数int

  1. def __le__(self, *args, **kwargs): # real signature unknown
  2. """ Return self<=value. """
  3. pass

相当于<= 为真返回 True 假返回False

  1. def __lt__(self, *args, **kwargs): # real signature unknown
  2. """ Return self<value. """
  3. pass

相当于< 为真返回 True 假返回False

  1. def __mod__(self, *args, **kwargs): # real signature unknown
  2. """ Return self%value. """
  3. pass

相当于%

  1. def __mul__(self, *args, **kwargs): # real signature unknown
  2. """ Return self*value. """
  3. pass

相当于*乘

  1. def __neg__(self, *args, **kwargs): # real signature unknown
  2. """ -self """
  3. pass

相当于相反数

  1. def __new__(*args, **kwargs): # real signature unknown
  2. """ Create and return a new object. See help(type) for accurate signature. """
  3. pass

__init__()方法在创建实例后调用.如果你想控制创建过程,请使用__new__()方法

  1. def __ne__(self, *args, **kwargs): # real signature unknown
  2. """ Return self!=value. """
  3. pass

相当于!= 真返回 True 假返回False

  1. def __pos__(self, *args, **kwargs): # real signature unknown
  2. """ +self """
  3. pass

相当于 +

  1. def __pow__(self, *args, **kwargs): # real signature unknown
  2. """ Return pow(self, value, mod). """
  3. pass

相当于平方

  1. def __radd__(self, *args, **kwargs): # real signature unknown
  2. """ Return value+self. """
  3. pass

相加

  1. def __rdivmod__(self, *args, **kwargs): # real signature unknown
  2. """ Return divmod(value, self). """
  3. pass

相当于divmod

进阶

  1. """
  2. 基础:
  3. 初始化一个实例 x = MyClass() x.__init__()
  4. 作为一个字符串的”官方”表示 repr(x) x.__repr__()
  5. 作为一个字符串 str(x) x.__str__()
  6. 作为字节数组 bytes(x) x.__bytes__()
  7. 作为格式化字符串 format(x, format_spec) x.__format__(format_spec)
  8. - __init__()方法在创建实例后调用.如果你想控制创建过程,请使用__new__()方法
  9. - 按照惯例, __repr__() 应该返回一个有效的Python表达式的字符串
  10. - __str__()方法也被称为你的print(x)
  11.  
  12. 迭代相关
  13. 遍历一个序列 iter(seq) seq.__iter__()
  14. 从迭代器中获取下一个值 next(seq) seq.__next__()
  15. 以相反的顺序创建一个迭代器 reversed(seq) seq.__reversed__()
  16. - __iter__()无论何时创建新的迭代器,都会调用该方法.
  17. - __next__()每当你从迭代器中检索一下个值的时候,都会调用该方法
  18. - __reversed__()方法并不常见.它需要一个现有序列并返回一个迭代器,该序列是倒序的顺序.
  19.  
  20. 属性
  21. 得到一个属性 x.my_property x.__getattribute__('my_property')
  22. 获得一个属性 x.my_property x.__getattr__('my_property')
  23. 设置一个属性 x.my_property = value x.__setattr__('my_property', value)
  24. 阐述一个属性 del x.my_property x.__delattr__('my_property')
  25. 列出所有属性和方法 dir(x) x.__dir__()
  26. 如果你的类定义了一个__getattribute__()方法,Python将在每次引用任何属性或方法名时调用它.
  27. 如果你的类定义了一个__getattr__()方法,Python只会在所有普通地方查找属性后调用它.如果一个实例x定义了一个属性 color, x.color将不会调用x.__getattr__('color'); 它将简单地返回已经定义的x.color值.
  28. __setattr__()只要你为属性指定值,就会调用该方法.
  29. __delattr__()只要删除属性,就会调用该方法.
  30. __dir__()如果您定义一个__getattr__() 或者 __getattribute__() 方法,该方法很有用.通常情况下,调用dir(x)只会列出常规属性和方法.
  31. __getattr__()和__getattribute__()方法之间的区别很微妙但很重要.
  32.  
  33. 函数类
  34. 通过定义call()方法,您可以创建一个可调用类的实例 - 就像函数可调用一样.
  35.  
  36. 来”调用”像函数一样的实例 my_instance() my_instance.__call__()
  37. 行为
  38. 如果你的类作为一组值的容器 - 也就是说,如果问你的类是否”包含”一个值是有意义的 - 那么它应该定义下面的特殊方法,使它像一个集合一样.
  39. 序列的数量 len(s) s.__len__()
  40. 否包含特定的值 x in s s.__contains__(s)
  41. 字典(映射)
  42. 如果你想… 所以,你写… Python调用…
  43. 通过它的key来获得值 x[key] x.__getitem__(key)
  44. 通过它的key来设置一个值 x[key] = value x.__setitem__(key, value)
  45. 删除键值对 del x[key] x.__delitem__(key)
  46. 为丢失的key提供默认值 x[nonexistent_key] x.__missing__(nonexistent_key)
  47. 数字
  48. 加 x + y x.__add__(y)
  49. 减 x - y x.__sub__(y)
  50. 乘 x * y x.__mul__(y)
  51. 整除 x / y x.__trueiv__(y)
  52. 除 x // y x.__floordiv__(v)
  53. 取余 x % y x.__mod__(y)
  54. 整除与取余 divmod(x, y) x.__divmod__(y)
  55. 平方 x ** y x.__pow__(y)
  56. 左移 x << y x.__lshift__(y)
  57. 友移 x >> y x.__rshift__(y)
  58. 按位and运算 x & y x.__and__(y)
  59. 按位xor或运算 x ^ y x.__xor__(y)
  60. 按位or运算 `x y`
  61. 上述一组特殊方法采用第一种方法:给定x / y,它们提供了一种方法让x说”我知道如何用y整除自己”.以下一组特殊方法解决了第二种方法:它们为y提供了一种方法来说”我知道如何成为分母,并将自己整除x”.
  62.  
  63. 加 x + y x.__radd__(y)
  64. 减 x - y x.__rsub__(y)
  65. 乘 x * y x.__rmul__(y)
  66. 整除 x / y x.__rtrueiv__(y)
  67. 除 x // y x.__rfloordiv__(v)
  68. 取余 x % y x.__rmod__(y)
  69. 整除与取余 divmod(x, y) x.__rdivmod__(y)
  70. 平方 x ** y x.__rpow__(y)
  71. 左移 x << y x.__rlshift__(y)
  72. 友移 x >> y x.__rrshift__(y)
  73. 按位and运算 x & y x.__rand__(y)
  74. 按位xor或运算 x ^ y x.__rxor__(y)
  75. 按位or运算 `x y`
  76. 可是等等!还有更多!如果你正在进行”就地”操作,如x /= 3则可以定义更多特殊的方法.
  77.  
  78. 加 x + y x.__iadd__(y)
  79. 减 x - y x.__isub__(y)
  80. 乘 x * y x.__imul__(y)
  81. 整除 x / y x.__itrueiv__(y)
  82. 除 x // y x.__ifloordiv__(v)
  83. 取余 x % y x.__imod__(y)
  84. 整除与取余 divmod(x, y) x.__idivmod__(y)
  85. 平方 x ** y x.__ipow__(y)
  86. 左移 x << y x.__ilshift__(y)
  87. 友移 x >> y x.__irshift__(y)
  88. 按位and运算 x & y x.__iand__(y)
  89. 按位xor或运算 x ^ y x.__ixor__(y)
  90. 按位or运算 `x y`
  91. 还有一些”单个数”数学运算可以让你自己对类似数字的对象进行数学运算.
  92.  
  93. 负数 -x x.__neg__()
  94. 正数 +x x.__pos__()
  95. 绝对值 abs(x) x.__abs__()
  96. 逆 ~x x.__invert__()
  97. 复数 complex(x) x.__complex__()
  98. 整数 int(x) x.__int__()
  99. 浮点数 float(x) x.__float__()
  100. 四舍五入到最近的整数 round(x) x.__round__()
  101. 四舍五入到最近的n位数 round(x, n) x.__round__(n)
  102. 最小整数 math.ceil(x) x.__ceil__()
  103. 最大整数 math.floor(x) x.__floor__()
  104. 截断x到0的最接近的整数 math.trunc(x) x.__trunc__()
  105. 数字作为列表索引 a_list[x] a_list[x.__index__()]
  106. 比较
  107. 等于 x == y x.__eq__(y)
  108. 不等于 x != y x.__ne__(y)
  109. 小于 x < y x.__lt__(y)
  110. 小于等于 x <= y x.__le__(y)
  111. 大于 x > y x.__gt__(y)
  112. 大于等于 x >= y x.__ge__(y)
  113. 布尔 if x: x.__bool__()
  114. 序列化
  115. 对象副本 copy.copy(x) x.__copy__()
  116. 深拷贝 copy.deepcopy(x) x.__deepcopy__()
  117. 序列化一个对象 pickle.dump(x, file) x.__getstate__()
  118. 序列化一个对象 pickle.dump(x, file) x.__reduce__()
  119. 序列化一个对象 pickle.dump(x, file, protocol_version) x.__reduce_ex__(protocol_version)
  120. 取出恢复后的状态 x = pickle.load(fp) x.__getnewargs__()
  121. 取出恢复后的状态 x = pickle.load(fp) x.__setstate__()
  122. with 语句
  123. with块限定了运行时上下文;在执行with语句时,”进入”上下文,并在执行块中的最后一个语句后”退出”上下文.
  124.  
  125. 进入with语句块 with x: x.__enter__()
  126. 退出with语句块 with x: x.__exit__(exc_type, exc_value, traceback)
  127. 真正深奥的东西
  128. x = MyClass() x.__new__()
  129. del x x.__del__()
  130. “ x.__solts__()
  131. hash(x) x.__hash__()
  132. x.color type(x).__dict__['color'].__get__(x, type(x))
  133. x.color = 'PapayaWhip' type(x).__dict__['color'].__set__(x, 'PapayaWhip')
  134. del x.color type(x).__dict__['color'].__del__(x)
  135. isinstance(x, MyClass) MyClass.__instancecheck__(x)
  136. isinstance(C, MyClass) MyClass.__subclasscheck__(C)
  137. isinstance(C, MyABC) MyABC.__subclasshook__(C)
  138. Python正确调用__del__()特殊方法时非常复杂.为了完全理解它,你需要知道Python如何跟踪内存中的对象.
  139. """

解析python部分常用魔术方法的更多相关文章

  1. python常用魔术方法概览

    构造和初始化 __init__(self, args) 构造函数 __new__(cls) 传入的是类实例 __del__(self) 析构函数,调用 del cls 时会被调用 属性访问控制 __g ...

  2. Python 类的魔术方法

    Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...

  3. php中的常用魔术方法总结

    以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET ...

  4. [Python3 填坑] 014 类的常用魔术方法举例

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 __init__() 2.2 __new__() 2.3 __call__() 2.4 __str__() 2.5 __repr__() ...

  5. python字符串常用的方法解析

    这是本人在学习python过程中总结的一些关于字符串的常用的方法. 文中引用了python3.5版本内置的帮助文档,大致进行翻译,并添加了几个小实验. isalnum S.isalnum() -> ...

  6. Python 基础之面向对象之常用魔术方法

    一.__init__魔术属性 触发时机:实例化对象,初始化的时候触发功能:为对象添加成员,用来做初始化的参数:参数不固定,至少一个self参数返回值:无 1.基本用法 #例:class MyClass ...

  7. python类的继承、多继承及其常用魔术方法

    继承 一个类可以派生出一个子类,这个子类可以使用父类的属性及方法,也可以在父类的基础上添加自己的独特属性或方法.属性和方法的继承的顺序是先从自己开始,找不到再去找父类,父类没有再找父类的父类,其尽头就 ...

  8. Python中的常用魔术方法介绍

    1.__init__ 初始化魔术方法 触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中) 参数:至少有一个self,接收对象 返回值:无 作用:初始化对象的成员 注意:使用该方式初 ...

  9. Python面向对象5:类的常用魔术方法

    魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发- 魔术方法的统一的特征,方法名被前后各两个下滑线包裹 - 操作类 - `__init__`: 构造函数 - `__new__`: 对象实例 ...

随机推荐

  1. Win10中如何把语言栏缩到系统托盘

    Win10中如何把语言栏缩到系统托盘 原来语言栏是在系统托盘中的,右键点击,然后选择“显示语言栏”,就不能缩回去了: 后来在“控制面板\时钟.语言和区域\语言\高级设置”里面,有一个选项: “使用桌面 ...

  2. 保护眼睛-eclipse黑色背景设置

    eclipse中java编辑器颜色改动,适合程序员人群: 长时间编码,眼睛是有非常大负担的,特别是使用eclipse,它自带的java编辑器背景色是刺眼的白色.代码颜色基本是黑色,这样一个编辑器里白色 ...

  3. robin 今天来南大了

    今天非常高兴,在学校的体育馆见到了李彦宏博士. 这是第一次真实的见到了曾经仅仅能在媒体上才干够见到的人,真实,感觉非常好. 我算不上李彦宏的粉丝,也不是非常热衷于百度这个公司,可是我如今仍然心情澎湃. ...

  4. FreeBSD内核之中的一个 ALQ机制的使用

    背景: 笔者由于一个项目,这段时间在使用FreeBSD进行内核模块的编程. 之前做过一段时间的Linux下驱动模块编程.对Linux下的模块编程还算熟悉. 如今突然转到FreeBSD下.尽管Linux ...

  5. Linux Framebuffer驱动框架之二软件架构(未完待续)【转】

    本文转载自:http://blog.csdn.net/gqb_driver/article/details/12918547 /************************************ ...

  6. Oracle Instant Client 安装配置

    一.下载 下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 这是Ora ...

  7. codevs1288 埃及分数(IDA*)

    1288 埃及分数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在古埃及,人们使用单位分数的和(形如1/a的 ...

  8. 第一课trie 树 POJ 2001

    最短前缀(Openjudge上抄的) 总时间限制: 1000ms 内存限制: 65536kB 描述 一个字符串的前缀是从该字符串的第一个字符起始的一个子串.例如 "carbon"的 ...

  9. 移动端弹性滑动以及vue记录滑动位置

    -webkit-overflow-scrolling介绍 -webkit-overflow-scrolling: auto | touch; auto: 普通滚动,当手指从触摸屏上移开,滚动立即停止 ...

  10. Android 新浪微博开放平台应用 android签名怎么获得

    方法一: 通过命令行,直接生成MD5值 keytool -list -v -keystore keystorefile -storepass 其中keytool为jdk自带工具:keystorefil ...