Jestem nowy w Pythonie i podczas testowania niektórych metod na moim obiekcie zauważyłem coś "dziwnego".Python: czy wywołanie metody "bezpośrednio" tworzy instancję obiektu?
class Ape(object):
def __init__(self):
print 'ooook'
def say(self, s):
print s
def main():
Ape().say('eeek')
if __name__ == '__main__':
main()
Napisałem ten mały przykład, aby zilustrować, gdzie się pomyliłem. Jeśli zrobisz Ape(). Say ('eeek'), czy to faktycznie tworzy instancję obiektu Ape i uruchamia metodę init? Myślałem, że to nie będzie, ale miałem jakieś dziwne efekty uboczne, więc teraz myślę, że to robi?
Dzięki że czyści rzeczy. Domyślam się, że Ape() zbiera się od razu, skoro nigdzie nie ma o tym odniesienia? – Pickels
@Pickels: od razu staje się niedostępny, więc może być natychmiast zbiorem śmieci, tak. Lub może pozostać w pustce próżnej niedostępnej pamięci, dopóki interpreter Pythona nie zdecyduje, że chce odzyskać przestrzeń ;-) –