Junior
Self дар Python чист?
sobes.tech AI
Ҷавоб аз AI
self дар Python — ин аввалини аргументи усули намунаи синфи аст. Он намояндагии худи объект аст, ки усул тавассути он даъват шудааст.
Хусусиятҳои асосии self:
- Референсия ба намуна: Имкон медиҳад, ки ба хосиятҳо дастрасӣ ёфтан ва дигар усулҳоро ин намунаи махсус даъват кардан.
- Конвенсияи номгузорӣ:
selfанъанавӣ аст, аммо ҳатмӣ нест. Мумкин аст номи дигар истифода шавад, аммоselfстандарт аст, ки хонданро осон мекунад. - Автоматӣ дода мешавад: Ҳангоми даъвати усули намуна, Python автоматӣ референсияро ба намунаи даъваткунанда ҳамчун аввалин аргумент (
self) медиҳад. Шумо онро дар даъват муайян кардан лозим нест. - Дар усулҳои статикӣ ва класи: Дар усулҳои статикӣ (
@staticmethod)selfвуҷуд надорад, зеро онҳо бо намунаи муайян алоқаманд нестанд. Дар усулҳои класи (@classmethod) аввалин аргумент ба класи худ ишора мекунад (cls), на ба намуна.
Масалан истифода:
class MyClass:
def __init__(self, value):
# Мубодилаи арзиши додаашударо ба хосияти намуна `value`
self.value = value
def print_value(self):
# Истифодаи `self` барои дастрасӣ ба хосияти `value`
print(f"Value is: {self.value}")
# Сохтани намунаи синф
obj = MyClass(10)
# Даъвати усули намуна. Python автоматӣ `obj`-ро ҳамчун `self` медиҳад
obj.print_value()
Дар ин мисол, self дар дохили усулҳои __init__ ва print_value ба объекти obj ишора мекунад. Бе self дастрасӣ ба хосияти value, ки ба ҳамин намунаи MyClass тааллуқ дорад, имконнопазир буд.