浅谈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 代码效率的方法
Jul 03 Python
在windows系统中实现python3安装lxml
Mar 23 Python
常见的python正则用法实例讲解
Jun 21 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
详解Python发送email的三种方式
Oct 18 Python
用pycharm开发django项目示例代码
Oct 24 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
基于h5py的使用及数据封装代码
Dec 26 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
pytorch 如何使用amp进行混合精度训练
May 24 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 和 MySQL 基础教程(一)
2006/10/09 PHP
php Ajax乱码
2008/04/09 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
PHP如何将XML转成数组
2016/04/04 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
js操作iframe父子窗体示例
2014/05/22 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Python的requests网络编程包使用教程
2016/07/11 Python
python查看列的唯一值方法
2018/07/17 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
Python之字典添加元素的几种方法
2020/09/30 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
二年级数学教学反思
2014/01/21 职场文书
《尊严》教学反思
2014/02/11 职场文书
职工小家建设活动方案
2014/08/25 职场文书
趣味运动会广播稿
2014/09/13 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
单位租房协议范本
2014/12/03 职场文书
企业2014年度工作总结
2014/12/10 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python