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