Sobes.tech
Junior — Middle

Python-ում դասի մակարդակի փոփոխականները ինչպե՞ս են տարբերվում օրինակային փոփոխականներից։

sobes.tech AI

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

Դասի մակարդակի փոփոխականները (class variables) հայտարարում են դասի ներսում, բայց մեթոդներից դուրս, և ընդհանուր են այդ դասի բոլոր օրինակների համար: Դրանք պահվում են դասի անունային տարածքում և հասանելի են դասի և նրա օրինակների միջոցով:

Օրինակային փոփոխականները (instance variables) ստեղծվում են մեթոդների ներսում (հաճախ __init__-ում) և պատկանում են կոնկրետ օբյեկտին: Յուրաքանչյուր օրինակ ունի իր սեփական արժեքները այդ փոփոխականների համար:

Օրինակ:

class MyClass:
    class_var = 0  # դասի փոփոխական

    def __init__(self, value):
        self.instance_var = value  # օրինակային փոփոխական

obj1 = MyClass(10)
obj2 = MyClass(20)

print(obj1.class_var)      # 0
print(obj2.class_var)      # 0
print(obj1.instance_var)   # 10
print(obj2.instance_var)   # 20

MyClass.class_var = 5
print(obj1.class_var)      # 5
print(obj2.class_var)      # 5

obj1.instance_var = 15
print(obj1.instance_var)   # 15
print(obj2.instance_var)   # 20

Այսպիսով, դասի փոփոխականի փոփոխությունը անդրադառնում է բոլոր օրինակներին, եթե դրանք չեն վերագրել տեղական մակարդակում, իսկ օրինակային փոփոխականները յուրահատուկ են յուրաքանչյուր օբյեկտի համար։