Uso de python __all__

El __todos__ en el módulo de Python se usa para restringir la importación del módulo , como: desde la importación del módulo *

En este momento, si el módulo importado define el atributo __todos__, solo se pueden importar los atributos, métodos y clases especificados en __todos__; si no se definen, se importan todos los atributos, métodos y clases públicos del módulo.

1. Ejemplo 1

# bb.py 
clase A (): 
    def __init __ (self, name, age): 
        self.name = name 
        self.age = age 
class B (): 
    def __init __ (self, name, id): 
        self.name = name 
        self .id = id 
def fun (): 
    print "¡func () se ejecuta!" 
def fun1 (): 
    print "¡func1 () se ejecuta!"


# test_bb.py 
from bb import * 
a = A ('zhansan', '18') 
print a.name, a.age 
b = B ("lisi", 1001) 
print b.name, b.id 
fun () 
fun1 ()

运行 结果 :
zhansan 18 
lisi 1001 
func () se ejecuta! 
func1 () se ejecuta!

注:
  由于bb.py中没有定义__all__属性,所以导入了bb.py中所有的公有属性


2.实例2
# bb.py 
__todos __ = ('A', 'func') 
clase A (): 
    def __init __ (self, name, age): 
        self.name = name 
        self.age = age 
class B (): 
    def __init __ (self, name, id): 
        self.name = name 
        self.id = id 
def func (): 
    print "func () is run!" 
def func1 (): 
    print "¡func1 () se ejecuta!"
 
 
# test_bb.py 
de bb import * 
a = A ('zhansan', '18') 
print a.name, a.age 
func () 
# b = B ("lisi", 1001) 
# func1 ()
#NameError: name 'B' is not defined
#NameError: name 'func1' is not defined  
Resultado de la ejecución: ¡ 
zhansan 18 
func () se ejecuta! 

Nota: 
  Debido a que __all __ = ('A', 'func') se usa en bb.py, cuando otros módulos importan este módulo, solo __all__ se pueden importar Variables, métodos, clases


3.实例3
# bb.py 
def func (): # ¡ se ejecuta el método público en el módulo print'func 
    ()! ' 
def _func (): 
    # ¡ se ejecuta el método protegido en el módulo print'_func ()!' 
def __func (): # El método privado 
    print '__ func () se ejecuta!' En el módulo

# test_bb.py 
de bb import * #Este método solo puede importar atributos, métodos y clases públicos [Las propiedades, métodos y clases que comienzan con un guión bajo simple (protegido) o un guión bajo doble (privado) no se pueden importar] 
func () 
# _func () 
#__ func () 


Resultado de la ejecución: ¡ 
se ejecuta func ()! 

Nota: 
  desde bb import *: este método solo puede importar atributos públicos, métodos y clases [No se puede importar con un guión bajo simple (protegido) o guión bajo doble Atributos, métodos y clases al principio (privado)] 
  _func() #NameError: name '_func' is not defined
  __func() #NameError: name '__func' is not defined


4. Ejemplo 4
# bb.py 
__all __ = ('func', '__ func', '_ A') #放入__all__中所有属性均可导入,即使是以下划线开头
class _A (): 
    def __init __ (self, name): 
        self.name = name 
def func (): 
    print "func () is run! " 
def func1 (): 
    print "¡func1 () se ejecuta!" 
def _func (): 
    print "¡_func () se ejecuta!" 
def __func (): 
    print "__func () se ejecuta!"


# test_bb.py 
from bb import * 
func () 
# func1 () #func1不在__all__中,无法导入 NameError: name 'func1' is not defined 
#_func () #_func不在__all__中,无法导入 NameError: name '_func' is not defined
__func () #__func在__all__中,可以导入
a = _A ('zhangsan') #_A在__all__中,可以导入
print a.name 


resultado de ejecución: ¡ 
func () se ejecuta! 
__func () se ejecuta! 
zhangsan 

Nota:
  放入__all__中所有属性均可导入,即使是以下划线开头
  func1() #func1不在__all__中,无法导入 NameError: name 'func1' is not defined
  _func() #_func不在__all__中,无法导入 NameError: name '_func' is not defined
  __func() #__func在__all__中,可以导入
  a=_A('python') #_A在__all__中,可以导入



5.实例5

# bb.py 
def func (): 
    print '¡func () se ejecuta!' 
def _func (): 
    print '¡_func () se ejecuta!' 
def __func (): 
    print '__func () is run!'


# test_bb.py 
de bb import func, _func, __ func #可以通过这种方式导入public,protected,private
func () 
_func () 
__func () 


Resultado de la ejecución: ¡ 
func () se ejecuta! ¡ 
_func () se ejecuta! 
__func () se ejecuta! 

Nota: 
  Aunque _func (), __func () pertenece al protected , private"permiso " , pero si usa este método, se puede importar y acceder a él directamente. 


6. Ejemplo 6

# bb.py 
def func (): 
    print '¡func () se ejecuta!' 
def _func (): 
    print '¡_func () se ejecuta!' 
def __func (): 
    print '__func () is run!'
# test_bb.py 
import bb #可以通过这种方式导入public,protected,private
bb.func () 
bb._func () 
bb .__ func () 

resultado de ejecución: 
func () se ejecuta! 
_func () se ejecuta! 
__func () se ejecuta! 

Nota: 
  puede importar el módulo Importar el módulo y, a continuación, utilice el método module.XX para acceder "public,protected,private"权限的内容

Supongo que te gusta

Origin blog.csdn.net/weixin_45131345/article/details/111868252
Recomendado
Clasificación