Mengapa __all__ Python tidak boleh menghalang "kandungan yang tidak dieksport tidak boleh diakses"?
大家讲道理
大家讲道理 2017-05-18 10:50:54
0
2
794

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

  • base.py

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

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

import base
                                                                                                            
print(base.c)
  • Output

3

Persekitaran

  • Python 2.7

大家讲道理
大家讲道理

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

membalas semua(2)
过去多啦不再A梦

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

Tiada apa-apa yang benar-benar peribadi dalam Python

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan