开发者学堂课程【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)