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类中self参数用法详解

本文地址: http://www.cppcns.com/jiaoben/python/300413.html

python 函数参数self_Python类中self参数用法详解相关推荐

  1. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  2. python中的super用法详解_Python中super函数用法实例分析

    本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...

  3. python中split啥意思_python中split的用法详解_后端开发

    如何用python正则表达式匹配字符串?_后端开发 用python正则表达式匹配字符串的方法:1.当匹配单个位置的字符串时,可以使用[(.+?)]正则表达式来提取:2.当连续多个位置的字符串匹配时,可 ...

  4. python中permute_PyTorch中permute的用法详解

    PyTorch中permute的用法详解 permute(dims) 将tensor的维度换位. 参数:参数是一系列的整数,代表原来张量的维度.比如三维就有0,1,2这些dimension. 例: i ...

  5. C++友元函数和友元类(C++ friend)详解

    在看VISP视觉库的时候遇到友元函数: Friends void swap (vpDetectorAprilTag &o1, vpDetectorAprilTag &o2) 在定义一个 ...

  6. python classmethod_对Python中的@classmethod用法详解

    在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法. 总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的. 不过还是好奇去查了一下. 大致可以 ...

  7. java中throws用法_java中throws实例用法详解

    在程序出现异常时,会有一个抛出异常的throw出现,这里我们要跟今天所讲的throws区分开.throws的作用是声明抛出,在名称上也跟throw有所不同.下面我们就throws对策概念.语法.实例带 ...

  8. mysql in从数据库取数_MySQL数据库中 where in 用法详解

    本文主要向大家介绍了MySQL数据库中 where in 用法详解,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 这里分两种情况来介绍 WHERE column IN (valu ...

  9. js中indexOf的用法详解

    js中indexOf的用法详解 String.IndexOf 方法 (Char, [startIndex], [count]) 报告指定字符在此实例中的第一个匹配项的索引.搜索从指定字符位置开始,并检 ...

最新文章

  1. 哪些人适合参加Python培训班?
  2. 李航「机器学习」最全综述
  3. 品牌才是硬道理——一线、二线主板品牌集中营品牌才是硬道理——一线、二线主板品牌集中营...
  4. Java 过滤器解决URLSQL注入漏洞、跨站漏洞、框架注入漏洞、链接注入漏洞
  5. go/git设置及取消代理方法
  6. VS2017调试闪退之Chrome
  7. 2、Flutter 填坑记录篇
  8. 「雕爷学编程」Arduino动手做(30)——光敏二极管模块
  9. android gridview拖动排序,Asp.net GridView 拖拽排序    原创(欢迎拍砖,敬请嘴下留情!)...
  10. JAVA虚拟机垃圾回收机制和JAVA排错三剑客
  11. MySQL重启也无法解决的Warning: World-writable config file '/etc/mysql/my.cnf' is ignored
  12. 七种机器内部排序的原理与C语言实现,并计算它们的比较次数与移动次数。
  13. 文件磁盘相关函数[11]-获取指定文件的版本号 GetFileVersion
  14. 将两个顺序表合并为一个新的顺序表
  15. oracle建立图书管理数据库,Oracle数据库设计 图书管理系统
  16. 计算机应用画画教程,小学生信息技术之电脑绘画教学
  17. 2021-2027全球与中国抽屉拉手市场情况与未来趋势研究报告
  18. 关于Muster 5.5.7的奇怪问题
  19. Hive 分区表 分桶表
  20. “当智慧遇见极简”,锐捷与千位信息化大咖共话智慧校园极简之道

热门文章

  1. 【干货】大数据驱动的因果建模在滴滴的应用实践
  2. 【报告分享】2019云安全威胁报告.pdf(附下载链接)
  3. 【白皮书分享】5G智慧城市安全需求与架构白皮书.pdf(附下载链接)
  4. ubuntu安装最新版blender方法
  5. NeurIPS 2021揭榜,接收率创九年新高,中了吗中了吗?
  6. 【数据结构与算法基础】线性表
  7. linux db2在线备份,DB2 pureScale在线备份恢复实例
  8. 蓝桥杯 基础练习 Huffuman树
  9. 微信小程序wx.getUserProfile
  10. 蓝桥杯 卡片换位(bfs)