web-dev-qa-db-fra.com

python classe pep8 en init importée mais non utilisée

Je vérifie PEP8 dans python en utilisant la bibliothèque python flake8 . J'ai une instruction d'importation dans un __init__.py fichier dans l'un de mes sous-modules qui ressemble à ceci:

from .my_class import MyClass

La raison pour laquelle j'ai cette ligne dans le fichier init est pour que je puisse importer MyClass depuis le sous-module en tant que from somemodule import MyClass au lieu d'avoir à écrire from somemodule.my_class import MyClass.

Je voudrais savoir s'il est possible de maintenir cette fonctionnalité tout en corrigeant la violation PEP8?

36
Salvius

Ce n'est pas réellement une violation PEP8. Je fais simplement ceci:

from .my_class import MyClass  # noqa

Edit: Une autre possibilité est d'utiliser __all__. Dans ce cas, flake8 comprend ce qui se passe:

from .my_class import MyClass

__all__ = ['MyClass',]
62
René Fleschenberg

Selon PEP 8 , vous devez inclure MyClass dans __all__ , qui corrigera également le problème importé mais non utilisé:

Pour mieux prendre en charge l'introspection, les modules doivent déclarer explicitement les noms dans leur API publique à l'aide de l'attribut __all__.

14
Mihai Capotă

Selon documentation de flake8 , vous pouvez ignorer en ligne cet avertissement spécifique avec:

from .my_class import MyClass  # noqa: F401

Pour référence, voici les flake8 codes d'erreur .

0
Mike T