2012-08-16 12 views
15
class Num: 
    def __init__(self,num): 
     self.n = num 

ich gelesen, dass die __init__ Methode gibt None .Wenn ich a=Num(5) durchführen, wird Num(5)__init__ Methode des class.But nennen, wenn __init__ kehrt None dann a nothing.But stattdessen verweisen a bezieht sich auf das Objekt Num Class.Wie ist es passiert? Also __init__ zurück None oder das Objekt der Klasse?Was bedeutet __init__ Methode Rückkehr in Python

Antwort

34

__init__() gibt None zurück. Es ist __new__(), die die neue Instanz zurückgibt.

+6

+1 (korrekt) Es scheint, als ob Ihre Verwirrung davon herrührt, dass "__init __()" die einzige Methode ist, die beim Instanziieren eines Objekts aufgerufen wird; 'a = Num (5)' ist nicht dasselbe wie 'a = Num .__ init __ (5) '(beachte, dass der zweite nicht funktioniert). –

+1

+1 für __init __() ist nicht die einzige Methode namens.Thnx @MatthewAdams – tez

1

Wenn Sie a = Num (5) ausführen, erstellen Sie das Objekt, und das neu erstellte Objekt wird zurückgegeben. Aber es ist nicht so einfach, wie Sie beim Erstellen des Objekts __init__ direkt aufrufen würden. __init__ wird als Teil des Initiationsprozesses von einigen Python-Magie im Hintergrund aufgerufen. Und im Grunde ist die __new__ Teil dieser Magie. Allerdings gibt es nur selten Fälle, bei denen man mit __new__ herumspielen möchte. Das solltest du nur tun, wenn du wirklich weißt, was du tust und ob es wirklich keine einfacheren Wege gibt, dein Ziel zu erreichen.