如何避免類/方法/等的多個位置。在一個python包的命名空間中?考慮一個包含以下目錄結構和代碼的包:禁止子模塊出現在名稱空間w/__init__.py
dummyproj/
├── __init__.py
└── main.py
。
# main.py
# =======
def dummy_func():
print "hello world"
。
# __init__.py
# ===========
from main import *
有了這種結構,函數dummy_func
可在包中找到。但是,它也可以從名爲main
的子模塊中獲得。例如:
>>> import dummyproj
>>> dir(dummyproj)
['__builtins__',
'__doc__',
'__file__',
'__name__',
'__package__',
'__path__',
'dummy_func',
'main']
>>> dummyproj.dummy_func()
hello world
>>> dummyproj.main.dummy_func()
hello world
我將如何防止main
不再出現在dummy_proj
命名空間呢?我的理解是,將dummy_func
的代碼包含在__init__.py
中將是錯誤的形式。
因此,儘管'dummy_func'出現在兩個地方,那麼這是一種可以接受的做法嗎? – 2014-09-21 22:04:16
感謝您的幫助,盧卡斯。我對'requests'模塊有點熟悉,所以這是一個有效的例子。你介意提交一些這樣的答案作爲答案,這樣我可以將其標記爲接受? – 2014-09-21 22:18:34