Python编程思想(24):类的实例方法
李宁老师已经在「极客起源」 微信公众号推出《Python编程思想》电子书,囊括了Python的核心技术,以及Python的主要函数库的使用方法。读者可以在「极客起源」 公众号中输入 160442 开始学习。
《Python编程思想》总目录
方法的第1个参数所代表的对象是不确定的,但它的类型是确定的。它所代表的只能是当前类的实例;只有当这个方法被调用时,它所代表的对象才被确定下来。也就是说,谁在调用这个方法,方法的第1个参数就代表谁。
class Bird:# 定义一个fly()方法def fly(self):print("正在执行fly方法")# 定义一个move()方法,move()方法需要借助fly()方法def move(self):# 使用self参数引用调用fly()方法的对象self.fly()print("正在执行move方法")bird = Bird()
bird.move()
在现实世界里,对象的一个方法依赖另一个方法的情形很常见,例如,吃饭方法依赖拿筷子或刀叉的方法,写程序方法依赖敲键盘方法,这种依赖都是同一个对象的两个方法之间的依赖。
当 Python对象的一个方法调用另一个方法时,不能省略self。也就是说,将上面的move方法改为如下形式是不正确的。
def move(self):# 省略self,下面的代码会报错fly()print("正在执行move方法")
此外,在构造方法中,self参数(第1个参数)代表该构造方法正在初始化的对象。例如如下代码。
class SelfInConstructor :def __init__(self) :# 在构造方法里定义一个name变量(局部变量)name = 'Bill'# 使用self代表该构造方法正在初始化的对象# 下面的代码将会把该构造方法正在初始化的对象的name实例变量设为Mikeself.foo = 'Mike'
# 所有使用SelfInConstructor创建的对象的name实例变量将被设为Mike
print(SelfInConstructor().foo) # 输出Mike
需要说明的是,自动绑定的self参数并不依赖具体的调用方式,不管是以方法调用还是以函数调用的方式执行它,self参数一样可以自动绑定。例如如下程序:
class Product:def process(self):print('self参数: ', self)product = Product()
# 以方法形式调用process()方法
product.process() # <__main__.User object at 0x00000000021F8240
# 将User对象的test方法赋值给foo变量
process = product.process
# 通过process变量(函数形式)调用process()方法。
process() # <__main__.User object at 0x00000000021F8240
当self参数作为对象的默认引用时,程序可以像访问普通变量一样来访问这个self参数,甚至可以把self参数当成实例方法的返回值。看下面程序。
class Person :def speed_up(self):if hasattr(self, 'speed'):self.speed += 1else:self.speed = 20# return self返回调用该方法的对象return self
person = Person()
# 可以连续调用同一个方法
person.speed_up().speed_up().speed_up().speed_up()
print("speed:", person.speed)
从上面程序中可以看出,如果在某个方法中把self参数作为返回值返回,则可以多次连续调用同一个方法,从而使得代码更加简洁。但是这种把self参数作为返回值的方法可能会造成实际意义的模
-----------------支持作者请转发本文,也可以加李宁老师微信:unitymarvel,或扫描下面二维码加微信--------
欢迎关注 极客起源 微信公众号,更多精彩视频和文章等着你哦!
Python编程思想(24):类的实例方法相关推荐
- Python编程思想【系列文章】
<Python编程思想>专栏 本系列文章持续更新中....... 李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及P ...
- Python编程思想(26):成员变量
李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及Python的主要函数库的使用方法.读者可以在「极客起源」 公众号中输入 160 ...
- Python编程思想(8):使用字典
<Python编程思想>总目录 目录 1. 创建字典 2. 字典的基本用法 3. 与字典相关的方法 字典是Python提供的一种常用的数据结构,可以用于保存具有映射关系的数据.比如有成绩单 ...
- Python编程思想(9):条件语句(if)
<Python编程思想>总目录 上一篇:Python编程思想(8):使用字典 目录 1. if语句基础 2. 由于缩进错误引发的血案 3. if条件的类型 4. pass语句 if语句用于 ...
- Python编程思想(18):哇!原来Python参数还可以这样用
李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及Python的主要函数库的使用方法.读者可以在「极客起源」 公众号中输入 160 ...
- Python编程思想(4):字符串类型
<Python编程思想>总目录 目录 1. 字符串和转义符 2. 字符串内建函数 3. 字符串高级操作 4. 保持字符串的原汁原味 5. 长字符串 字符串的意思就是"一串字符&q ...
- Python编程思想(16):压缩与排序列表
李宁老师已经在「极客起源」 微信公众号推出<Python编程思想>电子书,囊括了Python的核心技术,以及Python的主要函数库的使用方法.读者可以在「极客起源」 公众号中输入 160 ...
- Python编程思想是什么?
我们在接触Python的过程中,一定会了解到Python的编程思想,那么Python的编程思想是什么呢?有多少个呢?Python主要有2大编程思想,面向对象和面向过程,其中,pop(Process-o ...
- Day31——面向对象编程思想,类与对象
文章目录 面向对象前夕(人狗大战) 编程思想 对象与类的概念 对象与类的创建 对象的独立数据 面向对象前夕(人狗大战) 步骤一:先创建出一个个人和狗 我们选择用字典的数据类型来创建,因为当我们使用字符 ...
最新文章
- 云上人替代方案训练代码
- 计算机联锁站按钮继电器电路,计算机联锁系统与站内各种电路结合说明.DOC
- php 获取搜狗微信 sn,PHP 获取百度和搜狗收录量 代码 可用于EMLOG
- python pyside简单布局_python – pyside显示/隐藏布局
- deactivate_sending在创建新的table entry时的作用
- linux下怎么查kill某个进程,Linux下查询进程PS或者杀死进程kill的小技巧
- php 修改input内容,JS简单获取并修改input文本框内容的方法示例
- Result Cache结果高速缓存 (转)
- html5妇女节游戏,三八妇女节趣味小游戏
- mysql通过函数完成10的阶乘_我来做数据--如何对数据进行处理
- redis cli命令详解
- 图像平滑处理-中值滤波
- 商业综合体能耗在线监测管理系统_商场管理平台
- 改进的LCS算法的应用
- 2022年登高架设操作证考试题及在线模拟考试
- Vue刷新、跳转页面的数据保存方法: sessionStorage + Object.assign()
- [Cherno C++ 笔记 P1~P10]安装、链接器、变量、函数、头文件
- 3个月疫情倒闭了近90000家企业,为什么互联网公司每天都在招人?招聘一个程序员要多少成本
- Unity3d的安装
- idm显示您正在使用一个假冒的序列号_IDM提示假序列号解决办法
热门文章
- Python 模拟NBA文字直播 V1.0
- SOP是什么?SOP的作用是什么?如何编写SOP?
- (转载)Matlab—什么是nc文件,以及如何读取导入
- 雨巷-----美丽的忧伤
- 海盗云商php,海盗云商(2.2.1.160429)前台无限制注入(无需登录,无视GPC)
- 辨别貔貅币的一种代码思路
- 【原创】新韭菜日记12--涨了怕踏空,跌了急踩踏,股民的记忆只有7秒钟-----我们得承认多数人是非理性的
- 医学影像学考试 计算机,规培影像学的考试.ppt
- 程序员是出轨率最高的群体?欲加之罪何患无辞
- php编写润平年,【PHP】制作日历