Je suis tout à fait conscient que d' pylintautres outils d'analyse statique ne savent pas tout et qu'il faut parfois désobéir à leurs conseils. (Ceci s'applique à différentes classes de messages, pas seulement à l' conventionart.)
Si j'ai des cours comme
class related_methods():
def a_method(self):
self.stack.function(self.my_var)
class more_methods():
def b_method(self):
self.otherfunc()
class implement_methods(related_methods, more_methods):
def __init__(self):
self.stack = some()
self.my_var = other()
def otherfunc(self):
self.a_method()
Évidemment, c'est artificiel. Voici un meilleur exemple, si vous aimez .
Je crois que ce style s'appelle "mixins".
Comme d’autres outils, attribue une note à pylintce code -21.67 / 10, principalement parce qu’il pense more_methodset related_methodsn’a pas d’ selfattributs otherfunc, mais parce que sans exécuter le code, il ne peut apparemment pas voir et est mélangé à .stackmy_varrelated_methodsmore_methodsimplement_methods
Les compilateurs et les outils d’analyse statique ne peuvent pas toujours résoudre le problème Halting , mais j’estime que c’est un cas dans lequel regarder ce qui en a été hérité implement_methodsmontrerait que cela est parfaitement valide et que ce serait très facile à faire.
Pourquoi les outils d’analyse statique rejettent-ils ce modèle de POO valide (je pense)?
Non plus:
Ils ne sont même pas essayer de vérifier l' héritage ou
les mixins sont déconseillés en Python lisible et idiomatique
Le numéro 1 est évidemment incorrect, car si je demande pylintà me parler d’une classe à moi qui hérite unittest.TestCasequi utilise self.assertEqual, (quelque chose défini uniquement dans unittest.TestCase), elle ne se plaint pas .
Les mixins sont-ils non rythmiques ou découragés?

