Tengo una clase con una __init__
función.
¿Cómo puedo devolver un valor entero de esta función cuando se crea un objeto?
Escribí un programa, donde se __init__
analiza la línea de comandos y necesito tener algún valor establecido. ¿Está bien configurarlo en la variable global y usarlo en otras funciones miembro? Si es así, ¿cómo se hace? Hasta ahora, declaré una variable fuera de la clase. ¿Y configurar una función no se refleja en otra función?
__init__
; podemos ayudarlo si describe lo que realmente está tratando de lograr.Respuestas:
__init__
Se requiere devolver Ninguno. No puede (o al menos no debería) devolver otra cosa.Intente hacer lo que quiera para devolver una variable de instancia (o función).
fuente
new
aqui ¿Estánew
implícito en Python? Asumí que la semántica de Python era diferente de Java y los otros lenguajes que usan esta palabra.super().__init__
la clase derivada sin tener que transmitirlos a través de una variable de instancia.¿Por qué querrías hacer eso?
Si desea devolver algún otro objeto cuando se llama a una clase, utilice el
__new__()
método:fuente
__init__
, se da cuenta de que realmente, para brindar la flexibilidad que desea, necesita una fábrica de clases que devuelva instancias de subclases especializadas. Pero los usuarios de su biblioteca ya están usando su API existente. Para conservarlo, anula__new__
para devolver instancias de sus subclases especializadas.datetime
módulo de la Biblioteca estándar. Se usa__new__
exactamente de esta manera.De la documentación de
__init__
:Como prueba, este código:
Da este error:
fuente
El uso de muestra del asunto en cuestión puede ser como:
No tengo suficiente reputación por lo que no puedo escribir un comentario, ¡es una locura! Ojalá pudiera publicarlo como comentario para weronika
fuente
self
no está definido en__new__(cls, Item)
El
__init__
método, al igual que otros métodos y funciones, devuelve Ninguno de forma predeterminada en ausencia de una declaración de retorno, por lo que puede escribirlo como cualquiera de estos:Pero, por supuesto, agregar el
return None
no te compra nada.No estoy seguro de lo que buscas, pero es posible que te interese uno de estos:
huellas dactilares:
fuente
f = Foo().value
__init__
.__init__
no devuelve nada y siempre debe volverNone
.fuente
Puede simplemente establecerlo en una variable de clase y leerlo desde el programa principal:
fuente
Solo quería agregar, puede devolver clases en
__init__
El método anterior le ayuda a implementar una acción específica ante una excepción en su prueba
fuente
super().__init__
está regresandoNone
, por lo que está regresandoNone
, lo cual está bien, pero es redundante.init () no devuelve ningún valor resuelto perfectamente
salida: mi velocidad es de 21 kmh
fuente
Bueno, si ya no le importa la instancia del objeto ... ¡puede reemplazarla!
fuente
self
dentro de ese constructor.