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

Piratage - Autorisations de sécurité du module Python

Nous devons maintenant développer un système de plug-in. N'importe qui dans le système de plug-ins peut écrire des fichiers PY et les charger. Mais vous devez présenter la bibliothèque du programme principal, comme

# test.py
from lib.function import *
...

Comment empêcher les utilisateurs d'accéder à d'autres méthodes ou variables dans la bibliothèque ?

all Si j'ajoute des noms, mon programme principal doit appeler tous *, est-ce que ça va ?

伊谢尔伦伊谢尔伦2686 Il y a quelques jours644

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

  • 欧阳克

    欧阳克2017-06-12 09:27:57

    Variables ou méthodes pouvant être importées dans python并没有真正的私有变量或者方法, 所以基本上是无法阻止别人访问另一个模块的方法或者变量, 但是如果用户是通过from lib.function import *, 那么我们可以通过__all__属性去设置*, par exemple :

    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']

    Peut être vu sur b2.py的输出, 并没有barbaz, 所以我们可以通过这种方式, 来做一个简单的控制, 当然下划线开头的私有变量也限制了, 但这种限制对 import abc这种引入方式无效

    répondre
    0
  • Annulerrépondre