2013-06-02 28 views
5

Ad esempio, nel seguente codice:Perché una classe viene "chiamata" quando non viene avviata? - Python

class test: 
    print "Hi" 

Python sarebbe automaticamente stampare 'ciao'. Scusa se questa è una domanda ovvia, ma non riesco a scoprire perché Python lo farebbe a meno che non sia stato avviato un oggetto 'test'. * Ho appena iniziato a programmare in generale qualche mese fa e Python è la mia prima lingua, quindi per favore risparmiami un po 'di pietà.

risposta

7

Si sta costruendo una classe; il corpo di una classe viene eseguito come una funzione per costruire la definizione. Lo spazio dei nomi locale di tale 'funzione' costituisce l'insieme di attributi che compongono la classe. Vedere la documentazione class statement.

metodi in il corpo della classe non viene eseguito; come le definizioni di funzioni, è necessario chiamarle prima. Ma se prima non hai chiamato il corpo della classe, non sai affatto quali siano i metodi della classe.

Allo stesso modo, qualsiasi codice di livello superiore in un modulo viene eseguito quando si importa un modulo, per formare lo spazio dei nomi del modulo. Se si inserisce print "Hi" in un modulo, viene eseguito anche immediatamente.

+0

Non penso che il corpo di una classe sia eseguito come una funzione. Credo che sia eseguito quando viene rilevato (o immediatamente dopo la fine di esso). Inoltre, quando chiami una classe in un secondo momento, dopo la sua definizione, stai effettivamente chiamando la sua funzione '__init __()' (o è la classe base, se non ne definisce la sua). – martineau

Problemi correlati