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