浅谈Python类中的self到底是干啥的


Posted in Python onNovember 11, 2019

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('Bill')
print p

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

class Person:
  def _init_(self,name):
    self.name=name
  def sayhello(self):
    print 'My name is:',self.name
p=Person('Bill')
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('Bill')
p2 = Person('Apple')
print p1

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

总结

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

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

self总是指调用时的类的实例。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
尝试使用Python多线程抓取代理服务器IP地址的示例
Nov 09 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
Nov 30 Python
快速了解Python相对导入
Jan 12 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
学习Django知识点分享
Sep 11 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
python实现高效的遗传算法
Apr 07 Python
将Python代码打包成.exe可执行文件的完整步骤
May 12 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
python 调试冷知识(小结)
Nov 11 #Python
通过 Django Pagination 实现简单分页功能
Nov 11 #Python
python机器学习实现决策树
Nov 11 #Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 #Python
django中间键重定向实例方法
Nov 10 #Python
Java文件与类动手动脑实例详解
Nov 10 #Python
python语言线程标准库threading.local解读总结
Nov 10 #Python
You might like
PHP实现的简单mock json脚本分享
2015/02/10 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
详解Python编程中包的概念与管理
2015/10/16 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python实现二分查找算法
2017/09/21 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
python3 selenium自动化 下拉框定位的例子
2019/08/23 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
Java中各种基本数据类型的默认值都是什么
2016/12/22 面试题
公司总经理工作职责管理办法
2014/02/28 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
推荐信模板
2014/05/09 职场文书
学习十八大演讲稿
2014/09/15 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
pycharm代码删除恢复的方法
2021/06/26 Python