在定义类的过程中,无论是显式的创建类的构造方法,还是向类中添加实例方法,都要将self参数作为方法的第一个参数。

class Person:
def __init__(self):
print("正在执行构造方法")
def study(self, name):
print(name, "正在学python")
python类方法中的self参数就相当于C++中的this指针。

同一个类可以产生多个对象,当某个对象调用类方法时,该对象会把自身的引用作为第一个参数自动传给该方法,换句话说,python会自动绑定类方法的第一个参数指向调用该方法的对象。

如此,python解释器就能知道到底要操作哪个对象的方法了。

程序在调用实例方法和构造方法时,不需要手动为第一个参数传值。

class Person:
def __init__(self):
print("正在执行构造方法")
def study(self):
print(self, "正在学python")
xiaobai = Person()
xiaobai.study()
mary = Person()
mary.study()
#执行结果
#study()中的self代表该方法的调用者,即谁调用该方法,那么self就代表谁。
正在执行构造方法
<__main__.Person object at 0x0000013B6A24BA58> 正在学python
正在执行构造方法
<__main__.Person object at 0x0000013B6A24BC88> 正在学python

对于构造函数中的self参数,其代表的是当前正在初始化的类对象。

class Person:
name = "xiaobai"
def __init__(self, name):
self.name = name
mary = Person("mary")
print(mary.name)
lisa = Person("lisa")
print(lisa.name)
#执行结果
mary
lisa

总之,无论是类中的构造函数还是普通的类方法,实际调用它们的是谁,则self就代表谁。

最新文章

  1. Python底层socket库
  2. 让fetch也可以timeout
  3. 挖一挖C#中那些我们不常用的东西之系列(3)——StackTrace,Trim
  4. 在内部架设NuGet服务器(转载)
  5. Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法
  6. SpringMVC @ResponseBody的使用
  7. c 函数及指针学习 9
  8. struts2标签整理
  9. ASP.NET- LinkButton 传递多个参数
  10. android 06 LinearLayout
  11. 2013第46周四xml作为WS两端中间测试文件
  12. mongodb操作:利用javaScript封装db.collection.find()后可调用函数源码解读
  13. 写给Android App开发人员看的Android底层知识(1)
  14. STL:deque用法详解
  15. Data Warehouse
  16. 使用contenteditable=true的div模拟textarea(vue2.0中使用,带placeholder且高度自动撑开)
  17. Django之模板2
  18. 批量下载网站图片的Python实用小工具(下)
  19. svn问题汇总
  20. FIR定点提高精度的trick_02

热门文章

  1. Educational Codeforces Round 61
  2. How to fix nuget Unrecognized license type MIT when pack
  3. Keras文本预处理
  4. 006.MFC_对话框_复选框_单选钮
  5. Django的安装命令
  6. python入门之字符串的魔法
  7. asp.net保留两位小数
  8. $Poj3208$ 启示录 数位统计$DP$
  9. “Deep models under the GAN: information leakage from collaborative deep learning”阅读笔记
  10. 1050 螺旋矩阵 (25 分)C语言