浅谈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
  • asp之家 网络编程 m.aspxhome.com