Pitão:múltiplas chamadas para __init__() na mesma instância
-
23-09-2019 - |
Pergunta
O __init__()
a função é chamada quando o objeto é criado.Posso chamar um objeto __init__()
funcionar novamente, depois de ter sido criado?
instance = cls(p1=1, p2=2)
# some code
instance.__init__(p1=123, p2=234)
# some more code
instance.__init__(p1=23, p2=24)
por que alguém iria querer ligar __init__()
em um objeto que já foi criado?
boa pergunta.quero reinicializar os campos da instância.
Solução
Normalmente, o controle Breadcrumb (a pasta no canto superior esquerdo em SP 2010) ou o botão Voltar navegadores é a abordagem.Eu tenho, no entanto, escrito uma lista de listagem personalizada para ser colocada acima ou abaixo de uma exibição de lista.Mas isso significará alguma codificação personalizada (um WebPart ou por JavaScript em um editor de conteúdo WebPart)
Outras dicas
Você pode, mas é meio que quebrar o que __init__
pretende fazer.Muito do Python é apenas convenção, então você pode muito bem seguir e esperar __init__
para ser chamado apenas uma vez.Eu recomendaria criar uma função chamada init
ou reset
ou algo que defina as variáveis de instância, use isso quando quiser redefinir a instância e tenha __init__
apenas ligue init
.Isso definitivamente parece mais sensato:
x = Pt(1,2)
x.set(3,4)
x.set(5,10)
Tanto quanto eu sei, isso não causa nenhum problema (editar: Conforme sugerido pelo uso kosher de super(...).__init__(...)
), mas acho que ter um reset()
método e chamando -o em ambos __init__()
E quando você precisar redefinir, seria mais limpo.