主要内容 #
1. self用法 #
在定义类的过程中,无论是类的构造方法,还是类中的实例方法,都要求将 self 参数作为方法的第一个参数。
例如,定义一个 Person 类:
class Person: #定义一个人类 def __init__(self, name, age, weight): # __init__函数,实例化时为每个实例定制自己的属性 self.name = name self.age = age self.weight = weight def think(self, a, b): #人都可以思考,该方法的第一个参数一定是self,表示自己的实例 print(self.name, '在思考:', a,' + ',b,' = ',a+b) #通过self调用自己实例的属性 Someone = Person('小杰', 18, 60) #创建对象 Someone.think(10,100) #访问类对象的方法
2. self详解 #
self 参数的具体作用是同一个类可以产生多个对象。
当某个对象调用类方法时,该对象会把自身的引用作为第一个参数自动传给该方法。
换句话说,Python会自动绑定类方法的第一个参数指向调用该方法的对象。
如此,Python解释器就能知道到底要操作哪个对象的方法了。
例如,如下代码创建了名为 Person 的类,并对其进行了实例化:
class Person: #定义一个人类 def __init__(self, name): # __init__函数,实例化时为每个实例定制自己的属性 self.name = name # 实例属性,表示定义的实例有自己的name def myself(self): print("this is my self:", self) Someone_1 = Person(name="小杰") print("小杰: ", Someone_1) Someone_1.myself() print() Someone_2 = Person(name="大杰") print("大杰: ", Someone_2) Someone_2.myself()
上面代码中,myself() 中的 self 代表该方法的调用者,即谁调用该方法,那么 self 就代表谁。
因此,该程序的运行结果为:
小杰: <__main__.Person object at 0x00000156A44D8400> this is my self: <__main__.Person object at 0x00000156A44D8400> 大杰: <__main__.Person object at 0x00000156A4517EE0> this is my self: <__main__.Person object at 0x00000156A4517EE0>
3. 小结 #
- 类中的实例属性和实例方法的第一个参数必须是self
- self表征的是当前实例,这样类就能区分当前的实例的内容
习题 #
- 无