python中模組的 all

2022-07-25 04:09:12 字數 4198 閱讀 2456

python模組中的__all__,用於模組匯入時限制,如:from module import *

此時被匯入模組若定義了__all__屬性,則只有__all__內指定的屬性、方法、類可被匯入;若沒定義,則匯入模組內的所有公有屬性,方法和類。

1.例項1

#bb.py

class 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() is run!"

def fun1():

print "func1() is run!"

#test_bbfrom bb import a=a('zhansan','18'print a.name,a.agb=b("lisi",1001)print b.name,b.idfun()

fun1()

執行結果:

zhansan 18

lisi 1001

func() is run!

func1() is run!

注:由於bb.py中沒有定義__all__屬性,所以匯入了bb.py中所有的公有屬性

2.例項2

#bb.py

__all__=('a','func')

class 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() is run!"

#test_bb.py

from bb import *

a=a('zhansan','18')

print a.name,a.age

func()

#b=b("lisi",1001)#nameerror: name 'b' is not defined

#func1()#nameerror: name 'func1' is not defined

執行結果:

zhansan 18

func() is run!

注:由於bb.py中使用了__all__=('a','func'),所以在別的模組匯入該模組時,只能匯入__all__中的變數、方法、類

3.例項3

#bb.py

def func(): #模組中的public方法

print 'func() is run!'

def _func(): #模組中的protected方法

print '_func() is run!'

def __func(): #模組中的private方法

print '__func() is run!'

#test_bb.py

from bb import * #此方式只能匯入公有的屬性、方法、類【無法匯入以單下劃線開頭(protected)或以雙下劃線開頭(private)的屬性、方法、類】

func()

#_func()

#__func()

執行結果:

func() is run!

注:from bb import * --此方式只能匯入公有的屬性、方法、類【無法匯入以單下劃線開頭(protected)或以雙下劃線開頭(private)的屬性、方法、類】

_func() #nameerror: name '_func' is not defined

__func() #nameerror: name '__func' is not defined

4.例項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() is run!"

def _func():

print "_func() is run!"

def __func():

print "__func() is run!"

#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

執行結果:

func() is run!

__func() is run!

zhangsan

注:放入__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() is run!'

def _func():

print '_func() is run!'

def __func():

print '__func() is run!'

#test_bb.py

from bb import func,_func,__func#可以通過這種方式匯入public,protected,private
func()

_func()

__func()

執行結果:

func() is run!

_func() is run!

__func() is run!

注:雖然_func()、__func()屬於"protected,private"許可權的,但是如果使用該方式,是可以直接匯入訪問的

6.例項6

#bb.py

def func():

print 'func() is run!'

def _func():

print '_func() is run!'

def __func():

print '__func() is run!'

#test_bb.py

import bb #可以通過這種方式匯入public,protected,private

bb.func()

bb._func()

bb.__func()

執行結果:

func() is run!

_func() is run!

__func() is run!

注:可以通過import模組的方式匯入模組,然後使用模組.xx的方式訪問"public,protected,private"許可權的內容

python中模組的 all

python模組中的 all 屬性,可用於 模組匯入時限制,如 from module import 此時被匯入模組若定義了 all 屬性,則只有 all 內指定的屬性 方法 類可被匯入。若沒定義,則匯入模組內的所有公有屬性,方法和類 kk.py class a def init self,name...

python中模組的 all

python模組中的 all 屬性,可用於模組匯入時限制,如 from module import 此時被匯入模組若定義了 all 屬性,則只有 all 內指定的屬性 方法 類可被匯入。若沒定義,則匯入模組內的所有公有屬性,方法和類 kk.py all a func 在別的模組中,匯入該模組時,只能...

Python模組匯入時全域性變數 all

這位大佬已經寫得很好了 python中乙個py檔案就是乙個模組,all 變數是乙個特殊的變數,可以在py檔案中,也可以在包的 init py 現。1 在普通模組中使用時,表示乙個模組中允許哪些屬性可以被匯入到別的模組中,如 全域性變數 函式和類等。如下,test1.py和main.py 檔案 tes...