Sobes.tech
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 тааллуқ дорад, имконнопазир буд.