metoda samo wywołująca się lub wywoływana przez tworzony obiekt

1

Cześć,
mam pytanie, czy istnieje metoda, która sama się wyowła po zadeklarowaniu konstruktora. Czytałem o enter i exite, ale przy zadeklarowaniu w klasie nic mi się nie wyświeta(kod poniżej). Chciałbym żeby funkcja, którą zrobiłem uruchomiła się zaraz po utworzeniu obiekt. Proszę o jakąś podpowiedź.

def __enter__(self):
        print("__enter__")
        return self

def __exit__(self):
       print("__exit__")
       return self
3

Jak najbardziej można zrobić coś takiego, nazywa się to konstruktor i wygląda tak:

class Test:
    def __init__(self):
        self.__enter__()
        self.__exit__()

    def __enter__(self):
        print("__enter__")
        return self

    def __exit__(self):
        print("__exit__")
        return self

Test()

Generalnie dajesz wszystko, co chcesz w metodzie "__init__ " i to zostanie wywołane podczas tworzenia obiektu.

4

__enter__ __exit__ Możesz użyć z with

with Test() as test:
    test.do_something()
0

@WeaverBird: jesteś Wielki, nie wiedziałem że enter i exit muszę dodać w init. Myślałem że sama metodą się wywoła. Nigdzie tego nie znalazłem, teraz to działa. Dziękuję za pomoc

2

Nie trzeba dawać nic w init... @ledi12 ma rację:

class Test:
	def __enter__(self):
		print("__enter__")
		return self
		
	def __exit__(self, exc_type, exc_val, exc_tb):
		print("__exit__")
		return self

with Test() as test:
    pass

Działa.

0

Tak sobie jeszcze pomyślałem, że technicznie rzecz biorąc to trochę nakłamałem, że init to konstruktor. Różnica może nie jakaś duża, ale jest, trochę więcej do poczytania tutaj: https://stackoverflow.com/questions/8985806/python-constructors-and-init

1 użytkowników online, w tym zalogowanych: 0, gości: 1