先来看一段代码示例
class PoloBlog:
def __init__(self,name): #初始化属性
print("自动调用构造方法")
# 定义一个实例属性
self.name = name
# 定义一个实例属性
self.age = 18
def na(self):
print(self.name,self.age)
blog = PoloBlog("欧阳")
blog.na()#输出结果:欧阳 18
- 第一个构造方法__init__中的name就是初始化的实例属性,会打印出第三行内容,并且将name赋值给第四行的 self.name (实例属性)
- 实例方法 na是类中的一个普通方法,它接受一个参数 self,表示对类实例的引用。在该方法中,会打印出 self.name和self.age实例属性的值。
- 通过PoloBlog创造一个实例,将"欧阳"传入构造方法的“name”中,既PoloBlog("欧阳")赋值给blog。
- 最后通过blog.na(),调用了实例方法,输入了“name”和”age“的值。
初始化属性和实例属性
- 当创建一个类的实例时,Python会自动调用__init__(构造方法)来初始化实例,在构造方法中可以定义初始化属性和实例属性。
- 初始化属性是类的属性,在构造方法中定义并赋于初始值。它们在每次创建类的实例时都会被初始化,并且对于所有实例来说是相同的。
- 上述代码中,name是初始化属性,age因为是在构造方法外被定义的,所以是实例属性,并且它的初始值是18。
- 修改构造方法外创建的实例属性的值。
blog = PoloBlog("欧阳")
blog2 = PoloBlog("欧阳")
blog.na() # 输出结果:欧阳 18
blog.age = 20
blog.na() # 输出结果:欧阳 20
blog2.na() # 输出结果:欧阳 18
修改了实例属性age的值为20,blog2”age“属性的值仍然保持为18,说明实例属性和特定的实力相关的,每个实力可以独立修改并且访问。
总结一下,初始化属性在构造方法中定义并初始化,对于每个实例都是相同的。实例属性是与特定实例相关联的属性,每个实例都可以独立地创建、修改和访问它们。