Rumah  >  Soal Jawab  >  teks badan

Mengapa __all__ Python tidak boleh menghalang "kandungan yang tidak dieksport tidak boleh diakses"?

Fenomena sebenar

  1. Nantikan __all__ mengawal akses modul

  2. Menurut kontrak komuniti, perkara peribadi bermula dengan _, tetapi baru-baru ini saya mendapati rakan sekerja melaraskan antara muka peribadi (modul yang saya tulis)

  3. Python ialah bahasa yang fleksibel, dan peraturan tidak bertulis ialah "konvensyen atas konfigurasi"

Fenomena yang dijangkakan

  1. Saya mencari maklumat __all__ dan fikir ia boleh memenuhi keperluan saya, tetapi tidak (lihat di bawah)

Soalan

Jadi, __all__Nampak tak guna langsung?

Kod berkaitan

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

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

Persekitaran

大家讲道理大家讲道理2710 hari yang lalu696

membalas semua(2)saya akan balas

  • 过去多啦不再A梦

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

    Fail

    test.py ditukar kepada

    from base import *
    
    print a
    print b
    print c

    Hasilnya adalah seperti berikut:

    ❯ 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

    balas
    0
  • 曾经蜡笔没有小新

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

    Tiada apa-apa yang benar-benar peribadi dalam Python

    balas
    0
  • Batalbalas