Python >> Tutoriel Python >  >> Python Tag >> PyCharm

Python Mixin - Référence d'attribut non résolue [PyCharm]

Déclarez les champs nécessaires dans le Mixin comme :

class Mixin:
    foo:str

    def complex_operation(self):
        return self.foo.capitalize() 

De cette façon, le mixin déclare en fait les champs qu'une classe doit avoir pour pouvoir utiliser ce mixin. L'indication de type créera des avertissements si l'extension de la classe placera un type incompatible dans le champ déclaré.

edit :remplacement de foo =None par foo:str comme suggéré par @valex


Je vois peu d'options.

1) Tapez les annotations (je pense que c'est la solution la plus propre) :

class Mixin:
    foo: str

    def complex_operation(self):
        return self.foo.capitalize()

2) None par défaut Option (@ikamen) :

class Mixin:
    foo = None

    def complex_operation(self):
        return self.foo.capitalize()

3) Supprimer l'erreur de référence non résolue pour la classe ou pour une ligne spécifique (je pense que c'est une manière plus sale que les deux premières) :

# noinspection PyUnresolvedReferences
class Mixin:
    def complex_operation(self):
        return self.foo.capitalize()
class Mixin:
    def complex_operation(self):
        # noinspection PyUnresolvedReferences
        return self.foo.capitalize()