浅谈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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
简介Python中用于处理字符串的center()方法
May 18 Python
python字典的常用操作方法小结
May 16 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
Python3分析处理声音数据的例子
Aug 27 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
django model object序列化实例
Mar 13 Python
Python分析微信好友性别比例和省份城市分布比例的方法示例【基于itchat模块】
May 29 Python
降低python版本的操作方法
Sep 11 Python
python实现简单反弹球游戏
Apr 12 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 VS ASP
2006/10/09 PHP
说明的比较细的php 正则学习实例
2008/07/30 PHP
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
php中使用url传递数组的方法
2015/02/11 PHP
php遍历CSV类实例
2015/04/14 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
JS Timing
2007/04/21 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
js单例模式详解实例
2013/11/21 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
浅谈JS中的常用选择器及属性、方法的调用
2017/07/28 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
vuex入门最详细整理
2020/03/04 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
独特的python循环语句
2016/11/20 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python实现图片批量压缩程序
2018/07/23 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
新大陆软件面试题
2016/11/24 面试题
对标管理实施方案
2014/03/12 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
会计专业自荐书
2014/07/08 职场文书
快递员岗位职责
2014/09/12 职场文书
顶岗实习协议书
2015/01/29 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
Python+pyaudio实现音频控制示例详解
2022/07/23 Python