浅谈Python类中的self到底是干啥的
作者:我爱学python 时间:2022-10-24 15:18:41
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总是指调用时的类的实例。
来源:https://www.jianshu.com/p/10a402d78990
标签:Python,self
0
投稿
猜你喜欢
python的列表List求均值和中位数实例
2023-07-09 13:06:16
SQLServer2008存储过程实现数据插入与更新
2024-01-19 06:01:21
ASP.NET 2.0中的数据操作之九:跨页面的主/从报表
2023-07-19 20:28:42
总结python实现父类调用两种方法的不同
2022-05-27 14:54:48
vue3 自定义指令详情
2024-05-09 15:08:31
带你一文读懂Python垃圾回收机制
2022-03-03 11:58:03
Jquery练习之表单验证实现代码
2023-07-02 05:30:59
ACCESS 2007出现“错误 '80040e14'“
2008-06-19 13:21:00
python生成日历实例解析
2023-05-16 12:47:31
使用systemd部署服务的过程解析
2021-06-17 21:22:21
python pygame实现滚动横版射击游戏城市之战
2021-07-11 00:32:51
RHEL7.5下mysql 8.0.11安装教程
2024-01-27 13:43:49
对pandas中两种数据类型Series和DataFrame的区别详解
2021-08-05 04:09:38
Facebook基础的信息架构图
2008-04-01 09:46:00
解决Python 遍历字典时删除元素报异常的问题
2023-11-17 04:06:47
Python使用Opencv实现边缘检测以及轮廓检测的实现
2022-03-06 02:19:18
C#中使用SQLite数据库的方法介绍
2024-01-26 00:31:49
解决Python import .pyd 可能遇到路径的问题
2023-06-30 14:33:33
Django实现发送邮件功能
2021-05-13 10:25:44
浅谈python requests 的put, post 请求参数的问题
2023-05-06 14:54:47