Python类中self参数用法详解


Posted in Python onFebruary 13, 2020

Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了。

首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗(为了和其他编程语言统一,减少理解难度),不要搞另类,大家会不明白的。

下例中将self改为myname一样没有错误:

class Person:
  def __init__(myname,name):
    myname.name=name
  def sayhello(myname):
    print ('My name is:',myname.name)
p=Person('aoteman')
print(p)

self指的是类实例对象本身(注意:不是类本身)。

class Person:
  def __init__(self,name):
    self.name=name
  def sayhello(self):
    print ('My name is:',self.name)
p=Person('aoteman')
print(p)

在上述例子中,self指向Person的实例p。 为什么不是指向类本身呢,如下例子:

class Person:
  def __init__(self,name):
    self.name=name
  def sayhello(self):
    print ('My name is:',self.name)
p1 = Person('aoteman')
p2 = Person('xiaoyiyi')
print(p1)

如果self指向类本身,那么当有多个实例对象时,self指向哪一个呢?

总结

self在定义时需要定义,但是在调用时会自动传入。

self的名字并不是规定死的,但是最好还是按照约定是用self

更多关于Python类中self参数的用法请查看下面的相关链接

Python 相关文章推荐
简单介绍Python中的几种数据类型
Jan 02 Python
python九九乘法表的实例
Sep 26 Python
python3实现域名查询和whois查询功能
Jun 21 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
python实现多张图片拼接成大图
Jan 15 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
pytorch 归一化与反归一化实例
Dec 31 Python
python字符串下标与切片及使用方法
Feb 13 #Python
python时间与Unix时间戳相互转换方法详解
Feb 13 #Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 #Python
python 实现字符串下标的输出功能
Feb 13 #Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 #Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 #Python
使用Python 自动生成 Word 文档的教程
Feb 13 #Python
You might like
网站用php实现paypal整合方法
2010/11/28 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
PHP PDO操作总结
2014/11/17 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
Vue的自定义组件不能使用click方法的解决
2020/07/28 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
基于python绘制科赫雪花
2018/06/22 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
教师学习培训邀请函
2014/02/04 职场文书
工厂总经理岗位职责
2014/02/07 职场文书
我的小天地教学反思
2014/04/30 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
机械专业技术员求职信
2014/06/14 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记