浅谈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的Django框架中的Cookie相关处理
Jul 22 Python
Python字符串处理实例详解
May 18 Python
python 如何快速找出两个电子表中数据的差异
May 26 Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
元组列表字典(莫烦python基础)
Apr 03 Python
Django model select的多种用法详解
Jul 16 Python
python根据时间获取周数代码实例
Sep 30 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
python调用win32接口进行截图的示例
Nov 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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
PHP eval函数使用介绍
2013/12/08 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
PHP链表操作简单示例
2016/10/15 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
jquery固定底网站底部菜单效果
2013/08/13 Javascript
如何编写高质量JS代码
2014/12/28 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
python简单判断序列是否为空的方法
2015/06/30 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Python if语句知识点用法总结
2018/06/10 Python
python全局变量引用与修改过程解析
2020/01/07 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
.net工程师笔试题
2012/06/09 面试题
蛋糕店的商业计划书范文
2014/01/27 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
人民教师求职自荐信
2014/03/12 职场文书
公司授权委托书
2014/10/17 职场文书
学生违反校规检讨书
2014/10/28 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
Python中使用ipython的详细教程
2021/06/22 Python
openstack中的rpc远程调用的方法
2021/07/09 Python