recherche

Maison  >  Questions et réponses  >  le corps du texte

Pourquoi __all__ de Python ne peut-il pas empêcher « le contenu non exporté n'est pas accessible » ?

Phénomène réel

  1. Dans l'attente de __all__ contrôler l'accès au module

  2. Selon le contrat communautaire, les choses privées commencent par _, mais récemment j'ai découvert qu'un collègue avait ajusté l'interface privée (un module que j'ai écrit)

  3. Python est un langage flexible, et la règle non écrite est "la convention plutôt que la configuration"

Phénomènes attendus

  1. J'ai recherché les informations de __all__ et j'ai pensé qu'elles pourraient répondre à mes exigences, mais ce n'est pas le cas (voir ci-dessous)

Question

Alors, __all__Ça semble ne servir à rien ?

Codes associés

__all__ = ('a', 'b', )

a = 1 
b = 2 
c = 3    # 不希望别人访问 
import base
                                                                                                            
print(base.c)
3

Environnement

大家讲道理大家讲道理2754 Il y a quelques jours745

répondre à tous(2)je répondrai

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-18 10:52:54

    Le fichier

    test.py a été remplacé par

    from base import *
    
    print a
    print b
    print c

    Les résultats sont les suivants :

    ❯ python test.py                                                                                                                                                                                                                            ⏎
    1
    2
    Traceback (most recent call last):
      File "test.py", line 8, in <module>
        print c
    NameError: name 'c' is not defined

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-18 10:52:54

    Rien n'est vraiment privé en Python

    répondre
    0
  • Annulerrépondre