Junior — Middle
Python'da sinf darajasidagi o'zgaruvchilar va nusxa o'zgaruvchilar qanday farq qiladi?
sobes.tech AI
AIdan javob
Sinf klassi (class variables) sinf ichida, lekin metodlar tashqarisida e’lon qilinadi va bu sinfning barcha nusxalari uchun umumiy hisoblanadi. Ular sinf nomlar maydonida saqlanadi va sinf va uning nusxalari orqali kirish mumkin.
Nusxa o’zgaruvchilari (instance variables) metodlar ichida (odatda __init__ da) yaratiladi va aniq bir ob’ektga tegishli. Har bir nusxa o’zining bu o’zgaruvchilar uchun o’z qiymatiga ega.
Misol:
class MyClass:
class_var = 0 # sinf o’zgaruvchisi
def __init__(self, value):
self.instance_var = value # nusxa o’zgaruvchisi
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
Shunday qilib, sinf o’zgaruvchisining o’zgartirilishi barcha nusxalarda aks etadi, agar ular lokal ravishda qayta yozilmagan bo’lsa, va nusxa o’zgaruvchilari har bir ob’ekt uchun unikal bo’ladi.