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深入学习之内存管理
Aug 31 Python
跟老齐学Python之重回函数
Oct 10 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
python实现按行分割文件
Jul 22 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
Python之Class&Object用法详解
Dec 25 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 Python
Matplotlib绘制混淆矩阵的实现
May 27 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实现的MySQL数据浏览器
2007/03/11 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
php文件下载处理方法分析
2015/04/22 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
python实现学生管理系统开发
2020/07/24 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
详解python3 GUI刷屏器(附源码)
2021/02/18 Python
HTML5 weui使用笔记
2019/11/21 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
年会搞笑主持词串词
2014/03/24 职场文书
团干部培训方案
2014/06/03 职场文书
优秀员工自荐书
2015/03/06 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python