📜  如何定义实例和非实例属性?(1)

📅  最后修改于: 2023-12-03 15:09:05.412000             🧑  作者: Mango

如何定义实例和非实例属性?

在Python中,实例属性是在类的__init__方法中通过self定义的属性。非实例属性(也称静态属性)则是在类定义中直接定义,不需要实例化。下面我们通过代码来说明如何定义实例和非实例属性。

定义实例属性

实例属性是定义在对象上的属性,每个对象都可以有不同的属性值。在类中,我们可以通过self关键字在__init__方法中来定义实例属性。例如:

class MyClass:
    def __init__(self, value):
        self.value = value

在这个例子中,我们定义了一个MyClass类,并在初始化方法中通过self.value来定义了一个实例属性。可以通过以下代码来创建类的实例:

# 创建类的实例
my_obj = MyClass(10)

# 访问实例属性
print(my_obj.value)  # 输出:10
定义非实例属性

非实例属性是定义在类上的属性,所有的实例共享同一个属性值。在Python中,可以通过在类定义中直接定义变量来定义非实例属性。例如:

class MyClass:
    class_var = 100
    
    def __init__(self, value):
        self.value = value

在这个例子中,我们定义了一个名为class_var的非实例属性,它的值为100。可以通过以下代码来访问非实例属性:

# 创建类的实例
my_obj1 = MyClass(10)
my_obj2 = MyClass(20)

# 访问非实例属性
print(my_obj1.class_var)  # 输出:100
print(my_obj2.class_var)  # 输出:100

在这个例子中,我们创建了两个MyClass的实例my_obj1和my_obj2,并访问它们的class_var属性,发现它们的值都相同。这是因为class_var是一个非实例属性,在每个实例中都是相同的。

综上,通过self关键字定义的属性为实例属性,每个实例的值可以不同;直接定义在类中的属性为非实例属性,所有实例共享同一个属性值。