Sobes.tech
Junior — Middle

Қадамҳои чӣ гуна бояд барои иҷрои менеджери контексти худ дар Python гирифта шаванд?

sobes.tech AI

Ҷавоб аз AI

Python-да собствен контекст менежерро амалӣ карданӣ бошед, бояд объектиеро муайян кунед, ки методҳоро иҷро мекунад:

  • __enter__(self) — дар дохили контекст (with) даъват мешавад, объектро баргардон мекунад, ки пас аз as ба тағирёбанда вобаста мешавад.
  • __exit__(self, exc_type, exc_val, exc_tb) — дар хориҷи контекст даъват мешавад, маълумот дар бораи истисно (агар буд) мегирад, ва имкон медиҳад онро коркард ё пинҳон кунад.

Масалан, як менежери контексти оддӣ:

class MyContextManager:
    def __enter__(self):
        print("Ворид шудан ба контекст")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("Баромадан аз контекст")
        if exc_type:
            print(f"Таҳлили истисно: {exc_val}")
        # Вақте, ки True баргардонем, истисно пинҳон мешавад
        return True

with MyContextManager() as cm:
    print("Дар дохили with")
    raise ValueError("Хатогӣ")  # Истисно коркард ва пинҳон мешавад

Шумо инчунин метавонед декоратори contextlib.contextmanager-ро истифода баред, барои сохтани менежери контексти асос ёфта дар генератор, ки кодиҳоро содда мекунад.