Heim > Fragen und Antworten > Hauptteil
Jetzt müssen wir ein Plug-in-System entwickeln. Jeder im Plug-in-System kann PY-Dateien schreiben und laden. Sie müssen jedoch die Bibliothek des Hauptprogramms vorstellen, z. B.
# test.py
from lib.function import *
...
Wie kann verhindert werden, dass Benutzer auf andere Methoden oder Variablen in lib zugreifen?
alle Wenn ich Namen hinzufüge, muss mein Hauptprogramm alle * aufrufen, ist das in Ordnung?
欧阳克2017-06-12 09:27:57
在python
并没有真正的私有变量或者方法, 所以基本上是无法阻止别人访问另一个模块的方法或者变量, 但是如果用户是通过from lib.function import *
, 那么我们可以通过__all__
属性去设置*
能被import指定的变量或方法, 例如:
cat abc.py
__all__ = ['bar']
waz = 5
bar = 10
def baz(): return 'baz'
cat b2.py
from abc import *
print(dir())
# 输出:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'bar']
可以看到在b2.py
的输出, 并没有bar
和baz
, 所以我们可以通过这种方式, 来做一个简单的控制, 当然下划线开头的私有变量也限制了, 但这种限制对 import abc这种引入方式无效