Je suis tout à fait conscient que d' pylint
autres 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' convention
art.)
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 à pylint
ce code -21.67 / 10
, principalement parce qu’il pense more_methods
et related_methods
n’a pas d’ self
attributs otherfunc
, mais parce que sans exécuter le code, il ne peut apparemment pas voir et est mélangé à .stack
my_var
related_methods
more_methods
implement_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_methods
montrerait 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.TestCase
qui 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?