Sobes.tech
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.