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