Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了。

首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗(为了和其他编程语言统一,减少理解难度),不要搞另类,大家会不明白的。

下例中将self改为myname一样没有错误:

class Person:def _init_(myname,name):myname.name=namedef sayhello(myname):print 'My name is:',myname.name
p=Person('Bill')
print p

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Person:def _init_(self,name):self.name=namedef sayhello(self):print 'My name is:',self.name
p=Person('Bill')
print p

在上述例子中,self指向Person的实例p。 为什么不是指向类本身呢,如下例子:

class Person:def _init_(self,name):self.name=namedef sayhello(self):print 'My name is:',self.name
p1=Person('Bill')
p2 = Person('Apple')
print p1

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

总结

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

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

self总是指调用时的类的实例。

Python类中的self到底是干啥的相关推荐

  1. python编程是干啥用的-浅谈Python类中的self到底是干啥的

    Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了. 首先明确的是s ...

  2. 学习笔记——Python类中的self到底是干啥的

    Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了. 1.self是 ...

  3. python中类里self_Python类中的self到底是干啥的

    Python类中的self到底是干啥的 Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的 ...

  4. python类self_Python类中的self到底是干啥的

    Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上.后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了. 首先明确的是s ...

  5. Python类中的方法要加self的理由

    参考  Python类中的方法要加self的理由 - 云+社区 - 腾讯云 Python类中的self到底是干啥的 首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.s ...

  6. python类中成员的的调用

    python类中成员的调用 python类中的方法到底到底是方法还是函数取绝于调用者, 当类名调用这个方法时他是一个函数 class Foo(object):def f1(self):print(&q ...

  7. python方法定义..._解析Python类中的方法定义

    最近在学习类过程中,绑定方法这个概念没有理解透彻,所以在网上找了很多相关博客.文章研究到底是怎么一回事.因为有的文章所陈述与我在python3.5版本实际实验中有些出入,所以经过实践后总结出以下结论. ...

  8. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

  9. 在python中定义类时、运算符重载_自定义 Python 类中的运算符和函数重载(上)...

    如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 float 类型的区别: 你可能想知道同一内置运算符或函数如何对不同类对象进行不同操作的.这分别 ...

最新文章

  1. 在android平板上取位置和天气的实现方式
  2. 12月26日二周二次【Python基础语法】
  3. 1月6日 作业 穷举
  4. success for advertisement
  5. 随机给出三十道四则运算题目
  6. ros发布节点信息python_vscode开发ROS1(13)-python实现话题通信(msg)
  7. 软件测试框架课程考试_那考试准备课程值得吗?
  8. java栈顶元素_栈在Java类库中的实现
  9. cmake命令的python库的位置参数-DTORCH_PATH
  10. android 黄金颜色,一加手机3有哪几种颜色 一加3 薄荷金与冰川灰哪种颜色好看?...
  11. Redis 的字符串是这样实现的…
  12. 生意宝,淘宝,唯品会,58同城,去哪儿背后的赚钱生意经(转)
  13. Hive: Reflect UDF
  14. C语言/C++项目——黄金矿工
  15. 二元多项式基本运算 选择合适的存储结构表示二元多项式,并实现基本的加减运算 要求: 1)二元多项式的输入采用如下方式进行键盘输入 (5y^2+7)x^4 + (3y^4+2y+9)x^2 + (2y
  16. ecshop 小京东 微信公众号链接打开,报错appid不能为空,错误码10012
  17. Springboot+Vue实现富文本发表文章功能
  18. 第八章 Caché 使用持久对象
  19. 【如何成为一名优秀的项目经理】跟着本文8个步骤走下去
  20. 前端无法反序列化START\u数组标记-JSONCannot deserialize instance of `java.lang.String` out of START_ARRAY toke

热门文章

  1. QT自定义控件(生成和使用)
  2. 关于button按钮在IE中的宽度问题、、、、
  3. Thread Safety in the Standard C++ Library
  4. 用xml配置文件加载资源时(XML和XMLList的转换)
  5. 你认为手机会取代个人电脑吗?
  6. python 将dataframe中的str都转化成float_【Python自学笔记】一次不太成功的利用Python整理的利润表实践...
  7. SOA与EAI的比较
  8. 在ABAP/4中声明表格控制
  9. ABAP DOI详解(2)
  10. 程序员加班文化是怎么来的?