2013-06-02 15 views
5

Na przykład w poniższym kodzie:Dlaczego klasa zostaje "wywołana", gdy nie jest inicjowana? - Python

class test: 
    print "Hi" 

Python automatycznie wydrukować 'cześć'. Przepraszam, jeśli to jest oczywiste pytanie, ale nie mogę się dowiedzieć, dlaczego Python by to zrobił, chyba że zainicjowano obiekt "testowy". * Właśnie rozpocząłem programowanie kilka miesięcy temu, a Python to mój pierwszy język, więc proszę o odrobinę litości dla mnie.

Odpowiedz

7

Budujesz klasę; ciało klasy jest wykonywane jako funkcja do budowania definicji. Lokalny obszar nazw tej "funkcji" tworzy zestaw atrybutów, które tworzą klasę. Zobacz dokumentację class statement.

Metody w ciało klasy nie są wykonywane; podobnie jak definicje funkcji, musisz najpierw do nich zadzwonić. Ale jeśli nie zadzwoniłeś najpierw do ciała klasy, nie wiesz, jakie metody ma ta klasa.

W ten sam sposób dowolny kod najwyższego poziomu w module jest wykonywany podczas importowania modułu, aby utworzyć obszar nazw modułu. Jeśli umieścisz print "Hi" w module, zostanie on również natychmiast wykonany.

+0

Nie sądzę, że ciało klasy jest wykonywane jako funkcja. Uważam, że jest wykonywany, gdy zostanie napotkany (lub natychmiast po jego zakończeniu). Ponadto, gdy wywołasz klasę później, po jej definicji, w rzeczywistości wywołujesz funkcję '__init __()' (lub jej klasy bazowej, jeśli nie zdefiniowała ona swojej własnej). – martineau

Powiązane problemy