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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top