Python类中self参数用法详解


Posted in Python onFebruary 13, 2020

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('aoteman')
print(p)

self指的是类实例对象本身(注意:不是类本身)。

class Person:
  def __init__(self,name):
    self.name=name
  def sayhello(self):
    print ('My name is:',self.name)
p=Person('aoteman')
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('aoteman')
p2 = Person('xiaoyiyi')
print(p1)

如果self指向类本身,那么当有多个实例对象时,self指向哪一个呢?

总结

self在定义时需要定义,但是在调用时会自动传入。

self的名字并不是规定死的,但是最好还是按照约定是用self

更多关于Python类中self参数的用法请查看下面的相关链接

Python 相关文章推荐
python读取注册表中值的方法
Apr 08 Python
python生成器的使用方法
Nov 21 Python
python网络编程学习笔记(五):socket的一些补充
Jun 09 Python
python实现输入数字的连续加减方法
Jun 22 Python
浅谈django三种缓存模式的使用及注意点
Sep 30 Python
Python Pywavelet 小波阈值实例
Jan 09 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
May 08 Python
python单例模式的多种实现方法
Jul 26 Python
Python PO设计模式的具体使用
Aug 16 Python
使用python实现学生信息管理系统
Feb 25 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
Python 中的Sympy详细使用
Aug 07 Python
python字符串下标与切片及使用方法
Feb 13 #Python
python时间与Unix时间戳相互转换方法详解
Feb 13 #Python
Python3查找列表中重复元素的个数的3种方法详解
Feb 13 #Python
python 实现字符串下标的输出功能
Feb 13 #Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 #Python
python操作docx写入内容,并控制文本的字体颜色
Feb 13 #Python
使用Python 自动生成 Word 文档的教程
Feb 13 #Python
You might like
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
学习php分页代码实例
2013/10/24 PHP
php输入数据统一类实例
2015/02/23 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
动态加载js文件 document.createElement
2006/10/14 Javascript
JavaScript写的一个自定义弹出式对话框代码
2010/01/17 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
Javascript之String对象详解
2016/06/08 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
Python 实现进度条的六种方式
2021/01/06 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
英语专业个人求职信范文
2014/02/01 职场文书
年度考核自我鉴定
2014/02/02 职场文书
代办委托书怎么写
2014/08/01 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
Python闭包的定义和使用方法
2022/04/11 Python