Adicionando propriedades dinâmicas às classes
Na busca para simular um conjunto de resultados de banco de dados usando classes simuladas, surge um desafio: como atribuir propriedades dinâmicas propriedades para uma instância que se assemelha às de um dicionário. Isso envolve a criação de propriedades que se comportam como atributos com valores específicos.
Inicialmente, uma abordagem promissora envolvia atribuir propriedades usando:
setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))
No entanto, isso gerou objetos de propriedade em vez do comportamento desejado.
A solução está em adicionar propriedades à própria classe, em vez de instâncias individuais. Veja como funciona:
class Foo(object): pass foo = Foo() foo.a = 3 Foo.b = property(lambda self: self.a 1) print(foo.b) # Prints 4
Neste exemplo, adicionamos uma propriedade b à classe Foo usando o descritor de propriedade. Ao acessar foo.b, Python chama o método __get__ do descritor e passa a instância da classe como argumento. O método __get__ então retorna o valor da propriedade, que é calculado como self.a 1.
As propriedades fornecem uma maneira conveniente de definir o comportamento personalizado para atributos, expondo efetivamente o encanamento do sistema OO do Python.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3