Python-类属性和实例属性

在类中,根据变量定义的位置不同,以及定义的方式不同,类属性又可以细分为以下三种类型:

类体中,所有函数之外:类属性(类变量)

类体中,所有函数内部,以“self.变量名”的方式定义的变量:实例属性(实例变量)

类体中,所有函数内部,以“变量名 = 变量值”的方式定义的变量:局部变量

1.类变量

所有类的实例化对象都同时共享类变量。类变量的调用方法有两种,既可以使用类名直接调用,也可以使用类的实例化对象调用(此方法不推荐使用)。

class Person:
    name = "xiaobai"
    age = 10 def __init__(self, name, age): self.name = name self.age = age #使用类名直接调用 print(Person.name) print(Person.age) #通过类名修改类变量的值 Person.name = "lilei" Person.age = 20 print(Person.name) print(Person.age) #执行结果 xiaobai 10 lilei 20 

2.实例变量

只作用于调用方法的对象。实例变量只能通过对象名访问,无法通过类名访问。

class Person:
    def __init__(self): self.name = "xiaobai" self.age = 10 def say(self): self.content = "i love python" #name、age以及content都是实例变量。Person类的类对象都会包含name和age实例变量,只有调用了say()方法的类对象才会包含content实例变量。 mary = Person() print(mary.name) print(mary.age) mary.say() print(mary.content) #执行结果 xiaobai 10 i love python 
实例变量和类变量可以同名,但这种情况下使用类对象无法调用类变量,它会首选实例变量。
class Person:
    name = "lilei"
    def __init__(self): self.name = "xiaobai" self.age = 10 def say(self): self.content = "i love python" mary = Person() print(mary.name) #执行结果 xiaobai 

3.局部变量

局部变量只能用于所在函数中,函数执行完成后,局部变量也会被销毁。

猜你喜欢

转载自www.cnblogs.com/AprilW/p/13383171.html