天天看点

特殊方法|学习笔记

开发者学堂课程【Python 语言基础 3:函数、面向对象、异常处理:特殊方法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/601/detail/8757

特殊方法

内容简介:

一、 特殊方法含义

二、 文档位置

三、 特殊方法介绍

一、特殊方法含义

特殊方法也称为魔术方法,特殊方法都是使用_开头和结尾的;特殊方法一般不需要我们手动调用,需要在一些特殊情况下自动执行。

二、文档位置

Language Reference(语言参考)—Data model(数据模型)—Special method names(特殊方法名字)列出所有特殊方法的名字位置。

三、特殊方法介绍

实例:

定义一个 Person 类

class Person(object):

 “““人类”””

 def _init_(self,name,age):

  self.name = name

  self.age = age

1. _str_() 特殊方法

_str_() 这个特殊方法会在尝试将对象转换为字符串的时候调用

它的作用可以用来指定对象转换为字符串的结果(print函数)

def _str_(self):

 ​

 return ‘ Person [name=%s , age=%d]’%(self.name,self.sge)

创建两个 person 类的实例

p1 = Person(‘孙悟空’,18)

p2 = Person(‘猪八戒’,28)

打印 p1

当打印一个对象时,实际上打印的是对象中特殊方法 _str_() 的返回值

Print (p1)

2. _repr_() 特殊方法

_repr_() 这个特殊方法会在对当前对象使用 repr() 函数时调用

它的作用是指定对象在‘交互模式’中直接输出的效果

 def _repr_(self):

  return ‘Hello’

print(repr(p1))打印得出

3. _gt_特殊方法

_gt_会在对象做大于比较的时候调用,该方法的返回值将会作为比较的结果

它需要两个参数,一个 self 表示当前对象,other 表示和当前对象比较的对象

def _gt_(self,other):

 return self.age > other.age

print(p1 > p2)

print(p2 > p1)

关于大于小于等于的特殊方法:

object._lt_(self,other) 小于<

object._le_(self,other) 小于等于<=

object._eq_(self,other) 等于==

object._ne_(self,other) 不等于!=

object._gt_(self,other) 大于>

object._ge_(self,other) 大于等于>=

4. 获取长度的 _len_() 方 法

_len_() 获取对象的长度

5.布尔特殊方法

object._bool_(self) 可以通过 bool 来指定对象转换为布尔值的情况

def _bool_(self):

return self.age > 17

print(bool(p1))打印得出

If p1:

 print(p1.name,’已经成年了’)

else:

print(p1.name,’还未成年了’)

6.对对象做加法减法的特殊方法介绍

object._add_(self,other)

object._sub_(self,other)

object._mul_(self,other)

object._matmul_(self,other)

object._truediv_(self,other)

object._floordiv_(self,other)

object._mod_(self,other)

object._divmod_(self,other)

object._pow_(self,other[,modulo])

object._lshift_(self,other)

object._rshift_(self,other)

object._and_(self,other)

object._xor_(self,other)

object._or_(self,other)