浅谈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 相关文章推荐
pyqt和pyside开发图形化界面
Jan 22 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
Nov 30 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
django的ORM模型的实现原理
Mar 04 Python
python实现字符串加密成纯数字
Mar 19 Python
基于Django统计博客文章阅读量
Oct 29 Python
如何基于python实现脚本加密
Dec 28 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
Python是怎样处理json模块的
Jul 16 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
Mar 02 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
ThinkPHP安装和设置
2015/07/27 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
2014/01/15 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
js图片处理示例代码
2014/05/12 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
kali中python版本的切换方法
2019/07/11 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python实现扫雷游戏
2020/03/03 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
CSS3 简写animation
2012/05/10 HTML / CSS
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
市场营销个人求职信范文
2014/02/02 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
党员检讨书范文
2014/12/27 职场文书
给客户的感谢信
2015/01/21 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
班主任开场白
2015/06/01 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
争做文明公民倡议书
2019/06/24 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
python编程项目中线上问题排查与解决
2021/11/01 Python