python 类的实例变量、类变量、私有变量、静态变量的区别举例说明
- 实例变量:实例变量是属于类的实例的变量,每个实例都拥有自己独立的实例变量,可以通过self.变量名来访问。实例变量的值可以在多个实例之间不同。
举例:定义一个人类的类,每个人有自己的姓名和年龄,这些属性是实例变量。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person1 = Person("John", 20)
person2 = Person("Mary", 18)
print(person1.name) # 输出 John
print(person1.age) # 输出 20
print(person2.name) # 输出 Mary
print(person2.age) # 输出 18
- 类变量:类变量是属于类的变量,它是所有实例共享的,可以通过类名.变量名或实例.变量名来访问。类变量的值在多个实例之间是相同的。
举例:定义一个班级的类,班级有自己的名称和人数,这些属性是类变量。
class Class:
name = "Class 1"
student_num = 30
class1 = Class()
class2 = Class()
print(Class.name) # 输出 Class 1
print(class1.name) # 输出 Class 1
print(class2.name) # 输出 Class 1
class1.name = "Class 2"
print(Class.name) # 输出 Class 1
print(class1.name) # 输出 Class 2
print(class2.name) # 输出 Class 1
- 私有变量:私有变量是在变量名前加上双下划线“__”的变量,它只能在类的内部访问,外部无法直接访问。私有变量可以用来保护数据,防止外部直接修改。
举例:定义一个人类的类,人有自己的姓名和年龄,但是年龄是私有变量,外部无法直接访问和修改。
class Person:
def __init__(self, name, age):
self.name = name
self.__age = age
def get_age(self):
return self.__age
person1 = Person("John", 20)
print(person1.name) # 输出 John
print(person1.get_age()) # 输出 20
# 外部无法直接访问私有变量
# print(person1.__age) # 报错 AttributeError: 'Person' object has no attribute '__age'
# 外部无法直接修改私有变量
# person1.__age = 30 # 报错 AttributeError: 'Person' object has no attribute '__age'
- 静态变量:静态变量是在类中定义的变量,它不属于任何实例,可以通过类名.变量名来访问。静态变量和类变量类似,但是它一般用来定义常量或者类级别的状态。
举例:定义一个电脑类,电脑有自己的品牌和价格,价格是静态变量,所有电脑的价格都相同。
class Computer:
brand = "Lenovo"
price = 5000
computer1 = Computer()
computer2 = Computer()
print(Computer.brand) # 输出 Lenovo
print(computer1.brand) # 输出 Lenovo
print(computer2.brand) # 输出 Lenovo
print(Computer.price) # 输出 5000
print(computer1.price) # 输出 5000
print(computer2.price) # 输出 5000

原文地址: http://www.cveoy.top/t/topic/X2C 著作权归作者所有。请勿转载和采集!