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 fabric使用笔记
May 09 Python
Python读写配置文件的方法
Jun 03 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
提升Python效率之使用循环机制代替递归函数
Jul 23 Python
python+selenium 点击单选框-radio的实现方法
Sep 03 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 Python
使用Python实现牛顿法求极值
Feb 10 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
selenium判断元素是否存在的两种方法小结
Dec 07 Python
Python内置数据类型中的集合详解
Mar 18 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 分页函数multi() discuz
2009/06/21 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
PHP 微信支付类 demo
2015/11/30 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
Javascript typeof 用法
2008/12/28 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
angularJS开发注意事项
2018/05/26 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
python 全局变量的import机制介绍
2017/09/07 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
美丽乡村建设实施方案
2014/03/23 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
2014年教研工作总结
2014/12/06 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
2015年质检工作总结
2015/05/04 职场文书
教师教育教学随笔
2015/08/15 职场文书