Python: self的含义
python中self是什么:指向该实例本身的引用
python中的self在定义类的时候需要去定义,在创建实例的时候或者在调用的时候会自动传入。
class Dog:def __init__(self):print("正在执行构造方法")# 定义一个jump()实例方法def jump(self):print("正在执行jump方法")
python要求,类方法(构造方法和实例方法)中至少要包含一个参数,但并没有规定此参数的名称(完全可以叫任意参数名),之所以将类方法的第一个参数命名为 self,只是 Python 程序员约定俗成的一种习惯,这会使程序具有更好的可读性。
那么,作为类方法的第一个参数,self 参数的具体作用是什么呢?打个比方,如果把类比作造房子的图纸,那么对类实例化的对象才是真正的可以住的房子,根据一张图纸,我们可以创造出成千上万的房子,虽然每个图纸长相相似,但是他们都有各自的主人。而类方法的self参数,其实就相当于每个房子的要是,他可以保证,每个房子只有主人才能够进去。
同一个类可以产生多个对象,当某个对象调用方法是,该对象会将自身的引用作为第一个参数自动传递给该方法。换句话来说,python会自动绑定类方法的第一个参数指向调用该方法的对象。这样的话,python解释器就能知道到底要操作那个对象的方法了。
对于构造方法来说,self 参数(第一个参数)代表该构造方法正在初始化的对象。
因此,程序在调用实例方法和构造方法时,不需要为第一个参数传值。例如,更改前面的 Dog 类,如下所示:
class Dog:def __init__(self):print(self,"在调用构造方法")# 定义一个jump()方法def jump(self):print(self,"正在执行jump方法")# 定义一个run()方法,run()方法需要借助jump()方法def run(self):print(self,"正在执行run方法")# 使用self参数引用调用run()方法的对象self.jump()
dog1 = Dog()
dog1.run()
dog2 = Dog()
dog2.run()
上面代码中,jump() 和 run() 中的 self 代表该方法的调用者,即谁在调用该方法,那么 self 就代表谁,因此,该程序的运行结果为:
<__main__.Dog object at 0x00000276B14B12B0> 在调用构造方法
<__main__.Dog object at 0x00000276B14B12B0> 正在执行run方法
<__main__.Dog object at 0x00000276B14B12B0> 正在执行jump方法
<__main__.Dog object at 0x00000276B14B1F28> 在调用构造方法
<__main__.Dog object at 0x00000276B14B1F28> 正在执行run方法
<__main__.Dog object at 0x00000276B14B1F28> 正在执行jump方法
参考文献
1. python中self是什么
Python: self的含义相关推荐
- python代码大全表解释-【初学】Python异常代码含义对照表
原标题:[初学]Python异常代码含义对照表 Python常见的异常提示及含义对照表如下: 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 Keyb ...
- python中[::]的含义
python中[::]的含义 :是取值范围,','用来分割维度 需要注意的是list定义的二维数组不能用此方法取数值 最好使用nump定义的array类型 [:-1] b = [1,2,3,4,5,6 ...
- python的中文含义-python __all__ 含义
1. 背景 最近看了一些代码,发现有些python文件在import 下面声明 __all__,查阅资料了解其含义. 2. 含义 约定公开接口 : 可以清晰明了的知道该文件暴露的接口, 约定成俗的调用 ...
- Python常用运算符含义与用法演示
+运算符除了用于算术加法,还可以用于列表.元组和字符串的合并或连接,生成新对象: >>> 3 + (3+4j) #整数和复数相加 (6+4j) >> ...
- render在python中的含义_python面试中常见易混淆概念
可变数据类型和不可变数据类型 基本数据类型都是不可变数据类型 数字,字符串,布尔值,元组 数据结构(容器)都是可变数据类型 列表,字典,集合 不同下划线变量的含义 _单下划线开头:弱"内部使 ...
- python面向对象的含义_Python面向对象(一)
什么是对象?对象:独立性.功能性.交互性万物皆对象,均继承于Object类OOP:面向对象编程,本质含义在于复用代码,在较大规模或复杂项目中有用,提高写作产量面向对象和面向过程的对比编程实例 面向过程 ...
- python单词的含义-Python这个单词是什么含义??????????????
摘要: ... Python这个单词是什么含义??????????????的答案与解析↓↓本题答案和解析请扫描下面二维码↓↓ 以下为相关问题与答案和解析 附负担的赠与,其赠与物如有瑕疵的,则 ( ) ...
- python单词的含义-python
[单选题]计算机网络是地理上分散的多台( )遵循约定的通信协议,通过软硬件互联的系统. (6.0分) [单选题]for i in range(int(n)) 语句中,i的取值范围为() (8.0分) ...
- python文件开头含义
文章目录 概要 一.#!/usr/bin/env python 与 #!/usr/bin/python 的区别 二.# -*- coding:utf-8 -*- 概要 常见到python文件开头两行都 ...
- python *号的含义
python中*代表的含义 1.表示乘号 2.表示倍数,例如: def T(msg,time=1): print((msg+' ')*time) T('hi',3) 打印结果(打印3次): h ...
最新文章
- UVa272 - TEX Quotes(输入输出)
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
- jsp调用controller方法_SpringMVC五大核心组件及调用过程
- 分治法 Strassen算法计算方阵相乘
- UITextView 和 UITextField限制字符数和表情符号
- 三角形一条边在另一条的投影长度计算
- 【OJ2726】集合问题,堆
- 简单python日志抓取脚本
- 实战 | F1060路由模式典型组网配置案例(静态路由)
- 数据-第16课-栈的应用实战二
- 华为的人力资源体系的变革
- 了解KVM切换器的四种类形
- win10安装mysql8.0,一台电脑上安装多个mysql
- excel三种查重方法
- VSCode中安装Live Server插件实现Html网页代码的实时预览
- 曼哈顿算法公式_距离计算方法总结
- mysql计算员工的日薪_mysql 综合练习(一)
- 人口统计、红利、康波
- VS2022打开项目之后提示:找不到 .NETFramework,Version=v4.0 的引用程序集。要解决此问题,请为此框架版本安装开发人员工具包(SDK/目标包)或者重新定向应用程序。
- 导出iphone手机安装包的几种方法