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

leí que el método devuelve __init__None .Cuando realizo a=Num(5), Num(5) llamarán __init__ método de la class.But si __init__ vuelve None continuación a deben hacer referencia a nothing.But lugar a está haciendo referencia al objeto de Num Class.¿Cómo ocurre? ¿__init__ devuelve None o el objeto de la clase?¿Qué método __init__ de retorno en pitón

Respuesta

34

__init__() devuelve None. Es __new__() que devuelve la nueva instancia.

+6

+1 (correcto) Parece que tu confusión se debió a pensar que '__init __()' era el único método invocado al crear un objeto; 'a = Num (5)' no es lo mismo que 'a = Num .__ init __ (5)' (tenga en cuenta que el segundo no funciona). –

+1

+1 para __init __() no es el único método llamado.Thnx @MatthewAdams – tez

1

Al hacer a = Num (5), crea el objeto y se devuelve el objeto recién creado. Pero no es tan fácil como llamaría directamente al __init__ al crear el objeto. __init__ se llama como parte del proceso de iniciación por magia de Python en el fondo. Y básicamente, el __new__ es parte de esa magia. Sin embargo, solo hay casos excepcionales en los que desee manipular el __new__. Solo debe hacerlo, si realmente sabe lo que está haciendo y si realmente no hay formas más fáciles de alcanzar su objetivo.

Cuestiones relacionadas