Pourquoi __all__ de Python ne peut-il pas empêcher « le contenu non exporté n'est pas accessible » ?
大家讲道理
大家讲道理 2017-05-18 10:50:54
0
2
766

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

  • base.py

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

a = 1 
b = 2 
c = 3    # 不希望别人访问 
  • test.py

import base
                                                                                                            
print(base.c)
  • Sortie

3

Environnement

  • Python 2.7

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(2)
过去多啦不再A梦

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
曾经蜡笔没有小新

Rien n'est vraiment privé en Python

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal