浅谈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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
将Python代码打包为jar软件的简单方法
Aug 04 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Python实现中一次读取多个值的方法
Apr 22 Python
Python实现查看系统启动项功能示例
May 10 Python
浅谈python之新式类
Aug 12 Python
Django 中自定义 Admin 样式与功能的实现方法
Jul 04 Python
Python3 把一个列表按指定数目分成多个列表的方式
Dec 25 Python
python 日志 logging模块详细解析
Mar 31 Python
Python求凸包及多边形面积教程
Apr 12 Python
python脚本第一行如何写
Aug 30 Python
Python 用__new__方法实现单例的操作
Dec 11 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中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
php mail to 配置详解
2014/01/16 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
Js组件的一些写法
2010/09/10 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python2.x与Python3.x的区别
2016/01/14 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
简历里的自我评价
2014/01/31 职场文书
租房安全协议书
2014/08/20 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书