我在一個具有多種功能的 Python 專案中作業。這些功能中的每一個都作為自己的專案使用自己的模塊。
我已經定義了一個utils_general.py模塊,其中包含每個功能都可以使用的通用功能。此外,每個功能都有自己的utils_functionality_x.py模塊,其中包含僅在該模塊中使用的功能。我的專案結構如下:
.
-- __init__.py
-- src
| -- utils_general.py
| -- functionality_1.py
| | -- __init__.py
| | -- main_functionality_1.py
| | -- utils_functionality_1.py
| -- functionality_2.py
| | -- __init__.py
| | -- main_functionality_2.py
| | -- utils_functionality_2.py
-- .gitignore
-- README.md
在上面的例子中,在main_functionality_1.py 中,將使用來自utils_general.py和來自utils_functionality_1.py 的函式。同樣,在main_functionality_2.py 中,它將使用來自utils_general.py和來自utils_functionality_2.py 的函式。
我想匯入 utils 檔案的所有功能,就好像它是單個模塊一樣。我的意思是,我想讓utils_functionality_1.py “繼承” utils_general.py的功能。這個想法類似于類繼承,但是這兩個檔案是完全函式式的(在utils_general.py和utils_functionality_1.py中沒有定義類,只有函式)。
例如,這將導致在main_functionality_1.py我可以訪問到的功能utils_general.py和utils_functionality_1.py的名稱utils(注意,沒有功能的同名utils_general.py和utils_functionality_1.py)。例如,我想做這樣的事情(這行不通):
# This is pseudo-code and won't work
import src.utils_general as utils
import src.functionality_1.utils_functionality_1 as utils
我能想到的就是將utils_general.py的函式匯入utils_functionality_1.py,然后創建一個可以從外部呼叫的包裝函式。像這樣的東西:
utils_functionity_1.py 中的代碼:
# Code in utils_functionality_1.py
import src.utils_general as utils_general
def function_general(*args, **kwargs):
return utils_general.function_general(*args, **kwargs)
有沒有更好的方法/良好做法來在 Python 中的模塊之間進行這種“偽繼承”?
uj5u.com熱心網友回復:
您必須從utils_generalin匯入所有名稱utils_functionality_1,僅此而已。
# utils_functionality_1.py
from utils_general import *
uj5u.com熱心網友回復:
您可能需要稍微更改檔案夾結構,但您可以使用“命名空間包”來擴展具有附加檔案的現有模塊。
命名空間包是一種在磁盤上的多個目錄中拆分單個 Python 包的機制。
這是我在該主題上寫的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325649.html
下一篇:“合并”POD為一個
