浅谈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实现ip查询示例
Mar 26 Python
python使用点操作符访问字典(dict)数据的方法
Mar 16 Python
Python中的Classes和Metaclasses详解
Apr 02 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
Python实现图片转字符画的示例代码
Aug 21 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
详解用python写一个抽奖程序
May 10 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 Python
改变 Python 中线程执行顺序的方法
Sep 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实现的功能是显示8条基色色带
2006/10/09 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
基于jQuery的表单填充实例
2017/08/22 jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
JavaScript中this函数使用实例解析
2020/02/21 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
python实现ipsec开权限实例
2014/11/11 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python排序算法实例代码
2017/08/10 Python
python http接口自动化脚本详解
2018/01/02 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
Python变量类型知识点总结
2019/02/18 Python
20行python代码实现人脸识别
2019/05/05 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
基于树莓派的语音对话机器人
2019/06/17 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
怎样写留学自荐信
2013/11/11 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
党员的自我评价范文
2014/01/02 职场文书
出国留学经济担保书
2014/04/01 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
师范生见习报告
2014/10/31 职场文书