Python Language Méthodes de substitution dans les mixins


Exemple

Les mixins sont une sorte de classe utilisée pour "mélanger" des propriétés et des méthodes supplémentaires dans une classe. C'est généralement bien car plusieurs fois les classes mixin ne remplacent pas les méthodes des classes de base. Mais si vous remplacez des méthodes ou des propriétés dans vos mixins, cela peut entraîner des résultats inattendus car en Python, la hiérarchie des classes est définie de droite à gauche.

Par exemple, prenez les cours suivants

class Mixin1(object):
    def test(self):
        print "Mixin1"

class Mixin2(object):
    def test(self):
        print "Mixin2"

class BaseClass(object):
    def test(self):
        print "Base"

class MyClass(BaseClass, Mixin1, Mixin2):
    pass

Dans ce cas, la classe Mixin2 est la classe de base, étendue par Mixin1 et enfin par BaseClass. Ainsi, si nous exécutons l'extrait de code suivant:

>>> x = MyClass()
>>> x.test()
Base

Nous voyons que le résultat renvoyé provient de la classe de base. Cela peut conduire à des erreurs inattendues dans la logique de votre code et doit être pris en compte et gardé à l'esprit