Sobes.tech
Junior — Middle

Ինչ է տարբերությունը դասի հատկությունների և կոնկրետ օբյեկտի հատկությունների միջև Python-ում?

sobes.tech AI

Պատասխան AI-ից

Свойства класса (атрибуты класса) в Python принадлежат самому классу и общие для всех его экземпляров. Они определяются внутри тела класса, но вне методов. Если изменить свойство класса, это изменение будет видно во всех объектах, которые не переопределили это свойство.

Свойства конкретного объекта (атрибуты экземпляра) принадлежат только этому объекту и определяются обычно внутри метода __init__ или динамически. Они уникальны для каждого экземпляра и не влияют на другие объекты класса.

Пример:

class MyClass:
    class_attr = 10  # свойство класса

    def __init__(self, value):
        self.instance_attr = value  # свойство объекта

obj1 = MyClass(1)
obj2 = MyClass(2)

print(obj1.class_attr)      # 10
print(obj2.class_attr)      # 10
print(obj1.instance_attr)   # 1
print(obj2.instance_attr)   # 2

MyClass.class_attr = 20
print(obj1.class_attr)      # 20
print(obj2.class_attr)      # 20

obj1.instance_attr = 100
print(obj1.instance_attr)   # 100
print(obj2.instance_attr)   # 2