Где разместить __all__ в файле Python? - PullRequest
2 голосов
/ 08 января 2020

Мне интересно, каково стандартное размещение в Python файле для __all__?

Мое предположение прямо ниже операторов импорта. Тем не менее, я не мог найти это явно указано / спросил нигде. Так, в общем, где должно быть одно место __all__?

Где это будет помещено в приведенный ниже файл примера?

#!/usr/bin/env python3

"""Where to put __all__."""


from time import time


# I think it should go here: __all__ = ["Hello", "Hello2"]


SOME_GLOBAL = 0.0


class Hello:
    def __init__(self):
        pass


class Hello2:
    def __init__(self):
        pass


if __name__ == "__main__":
    pass

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 08 января 2020

Per PEP 8 :

"Уныние" на уровне модуля (то есть имена с двумя начальными и двумя конечными подчеркиваниями), такие как __all__, __author__, __version__, et c. должен располагаться после строки документации модуля, но перед любыми операторами импорта, за исключением __future__ import.

Так что, если вы строго следуете PEP 8, вы были близки. На практике это не строго соблюдается. тонна из Python модулей «включенных батарей» определяет __all__ после импорта, так что ваш подход идеально подходит.

1 голос
/ 08 января 2020

Как упомянуто здесь :

"Мешки" уровня модуля (то есть имена с двумя начальными и двумя конечными подчеркиваниями), такие как __all__, __author__, __version__, et c. должен быть помещен после строки документации модуля, но перед любыми операторами импорта, кроме __future__ import. Python требует, чтобы в будущем импорт отображался в модуле перед любым другим кодом, кроме строк документации:

...