特殊方法|学习笔记

简介: 快速学习 特殊方法

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

相关文章
|
Linux
Linux - 一次性计划任务之at命令使用
Linux - 一次性计划任务之at命令使用
448 0
|
前端开发 Java
SpringBoot前后端分离解决跨域问题的三种解决方案
SpringBoot前后端分离解决跨域问题的三种解决方案
574 0
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1002 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1698 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
642 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
611 14