Ajout de propriétés dynamiques aux classes
Dans la quête pour simuler un jeu de résultats de base de données à l'aide de classes fictives, un défi se pose : comment attribuer des propriétés dynamiques propriétés à une instance qui ressemblent à celles d’un dictionnaire. Cela implique de créer des propriétés qui se comportent comme des attributs avec des valeurs spécifiques.
Au départ, une approche prometteuse impliquait l'attribution de propriétés à l'aide de :
setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))
Cependant, cela a généré des objets de propriété au lieu du comportement souhaité.
La solution réside dans l'ajout de propriétés à la classe elle-même, plutôt qu'à des instances individuelles. Voici comment cela fonctionne :
class Foo(object): pass foo = Foo() foo.a = 3 Foo.b = property(lambda self: self.a 1) print(foo.b) # Prints 4
Dans cet exemple, nous ajoutons une propriété b à la classe Foo en utilisant le descripteur de propriété. Lors de l'accès à foo.b, Python appelle la méthode __get__ du descripteur et transmet l'instance de classe comme argument. La méthode __get__ renvoie ensuite la valeur de la propriété, qui est calculée comme self.a 1.
Les propriétés fournissent un moyen pratique de définir un comportement personnalisé pour les attributs, exposant efficacement la plomberie du système OO de Python.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3