1、self的基本概念
在Python中,self
是一个约定俗成的名称,代表类的实例(对象)本身。它是类的方法的第一个参数,用于指向调用该方法的对象。虽然你可以使用其他名称代替self
,但使用self
是Python社区的标准做法,能提高代码的可读性。
也就是说,从实操层面来讲,一个类中的所有的函数的第一个参数都要设置成self。这样做的意义一般是表明self.X是这个类中的变量,在这个类中是优先的。
2、self能够访问实例属性
可以定义一个类的变量,这个变量在这个实例(class)中流动,称为属性。这个一般依赖于__init__在一个类中提前设置好。
class Example:
def __init__(self, value):
self.value = value # 使用self来定义实例属性
def display(self):
print(self.value) # 使用self来访问实例属性
这有别于局部变量。self的使用能够区分实例属性和局部变量。在方法内部,如果你定义了一个与实例属性同名的局部变量,Python会优先使用局部变量。使用self
可以明确指向实例属性:
class Example:
def __init__(self, value):
self.value = value # 实例属性
def set_value(self, value):
self.value = value # 这里的value是局部变量
3、self允许方法链调用
这一般指在一个类中相比于__init__,还有其他的函数在操作的过程中改变了__init__一开始定义的类的属性值,这个的实现依赖于return self。
class Example:
def __init__(self, value):
self.value = value
def add(self, amount):
self.value += amount
return self # 返回当前实例
def display(self):
print(self.value)
# 使用方法链调用
example = Example(10)
example.add(5).display() # 输出15
4、在类内部,self能够传递实例到类中其他方法
在类的内部,self
使得你可以在一个方法中调用另一个方法,保持对同一实例的引用。但是要脱离类单独使用一个类中的方法,首先要初始化这个类(通过x=Example(X,Y,Z)进行初始化),然后使用X.其中的某个函数(这个函数要有return)。
class Example:
def __init__(self, value):
self.value = value
def increment(self):
self.value += 1
def display(self):
print(self.value)
def increment_and_display(self):
self.increment() # 调用其他方法
self.display() # 继续使用同一实例
总结
self
是Python类中一个非常重要的概念,它使得对象能够在其方法中引用自身的属性和其他方法。通过self
,你可以:
- 访问和修改实例属性
- 区分实例属性和局部变量
- 实现方法链调用
- 在类的内部方法之间传递实例