Eu tenho uma aula com uma __init__
função.
Como posso retornar um valor inteiro desta função quando um objeto é criado?
Eu escrevi um programa, onde __init__
analisa a linha de comando e preciso definir algum valor. Tudo bem defini-lo na variável global e usá-lo em outras funções de membro? Se sim, como fazer isso? Até agora, declarei uma variável fora da classe. e defini-la como uma função não reflete em outra função ??
__init__
; podemos ajudá-lo se você descrever o que realmente está tentando realizar.Respostas:
__init__
é necessário retornar Nenhum. Você não pode (ou pelo menos não deveria) devolver outra coisa.Tente fazer o que quiser para retornar uma variável de instância (ou função).
fonte
new
aqui? Estánew
implícito em Python? Presumi que a semântica do Python era diferente do Java e das outras linguagens que usam essa palavra.super().__init__
classe derivada sem ter que retransmiti-los por meio de uma variável de instância.Por que você gostaria de fazer isso?
Se você quiser retornar algum outro objeto quando uma classe for chamada, use o
__new__()
método:fonte
__init__
, você percebe que realmente, para fornecer a flexibilidade que deseja, você precisa de uma fábrica de classes que retorna instâncias de subclasses especializadas. Mas os usuários de sua biblioteca já estão usando sua API existente. Para preservá-lo, você substitui__new__
para retornar instâncias de suas subclasses especializadas.datetime
módulo na Biblioteca Padrão. Ele usa__new__
exatamente dessa maneira.Da documentação de
__init__
:Como prova, este código:
Dá este erro:
fonte
A amostra de uso do assunto em questão pode ser assim:
Não tenho reputação suficiente, então não posso escrever um comentário, é uma loucura! Eu gostaria de poder postá-lo como um comentário para weronika
fonte
self
não está definido em__new__(cls, Item)
O
__init__
método, como outros métodos e funções, retorna None por padrão na ausência de uma instrução return, portanto, você pode escrevê-lo como um destes:Mas, é claro, adicionar o
return None
não compra nada.Não tenho certeza do que você está procurando, mas pode estar interessado em um destes:
estampas:
fonte
f = Foo().value
__init__
.__init__
não retorna nada e deve sempre retornarNone
.fonte
Você pode apenas defini-lo como uma variável de classe e lê-lo no programa principal:
fonte
Só queria adicionar, você pode devolver aulas em
__init__
O método acima ajuda a implementar uma ação específica em uma exceção em seu teste
fonte
super().__init__
está retornandoNone
, então você está retornandoNone
, o que é bom, mas redundante.init () não retorna nenhum valor resolvido perfeitamente
saída: minha velocidade é de 21 kmh
fonte
Bem, se você não se importa mais com a instância do objeto ... você pode simplesmente substituí-la!
fonte
self
dentro desse construtor.