Warum kann Pythons __all__ nicht verhindern, dass auf nicht exportierte Inhalte nicht zugegriffen werden kann?
大家讲道理
大家讲道理 2017-05-18 10:50:54
0
2
735

Tatsächliches Phänomen

  1. Ich freue mich darauf, den Modulzugriff zu kontrollieren__all__

  2. Laut Community-Vertrag beginnen private Dinge mit

    , aber kürzlich habe ich festgestellt, dass ein Kollege die private Schnittstelle (ein Modul, das ich geschrieben habe) angepasst hat_

  3. Python ist eine flexible Sprache und die ungeschriebene Regel lautet „Konvention vor Konfiguration“

Erwartetes Phänomen

  1. Ich habe nach

    s Informationen gesucht und dachte, sie könnten meinen Anforderungen entsprechen, aber das war nicht der Fall (siehe unten)__all__

Frage

Also,

Es scheint überhaupt keinen Nutzen zu haben?__all__

Zugehörige Codes

  • base.py

  • __all__ = ('a', 'b', )
    
    a = 1 
    b = 2 
    c = 3    # 不希望别人访问 
  • test.py

  • import base
                                                                                                                
    print(base.c)
  • Ausgabe

  • 3
Umwelt

  • Python 2.7

大家讲道理
大家讲道理

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

Antworte allen(2)
过去多啦不再A梦

test.py 文件改为

from base import *

print a
print b
print c

结果如下:

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

在Python中没有什么是真正私有的

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage