一个简单的例子
代码
class Person:
def __init__(self, name):
self.name = name # 定义类的属性
def think(self): # self其实就是类函数think的一个普通参数而已,表示被调用的对象,参数具体值也即我们的实例对象
print("{} is thinking".format(self.name))
尝试使用两种方法输出看看
wgw.think()
wangguowei is thinking
Person.think(wgw)
wangguowei is thinking
二者的深入理解
查看两种方法是什么类?
- 一个是类函数
- 一个是实例的方法
Person.think
Out[14]: <function __main__.Person.think(self)>
wgw.think
Out[15]: <bound method Person.think of <__main__.Person object at 0x000000000543CEF0>>
因self 其实就是类函数 think 的一个普通参数而已
- 指被调用对象,参数具体值也即我们的实例对象
通过==[实例.方法]==调用时候为什么不需要传递参数?
该方法与当前实例对象进行了绑定
,调用的时候
- python会自动把实例对象作为参数传递过去
- 不需要再传递参数
系统理解self
1、self只有在类的方法中才会有,其他函数或方法是不必带self的。
2、在类的方法中(如__init__),第一参数永远是self,表示创建的类实例本身,而不是类本身。
3、针对self参数在调用时不必传入相应的参数。
4、可以把对象的各种属性绑定到self。
5.self不是python的关键字,只是一个约定俗成的,也可以用其他名称命名,但是为了规范和便于读者理解,推荐使用self。
6、类中_init__()方法是一种特殊的方法,被称为类的初始化方法,如果存在初始化值的就需要。
7、self 代表类的实例