0
我想找到一種自然機制來實現看起來像'編譯時間'在同一接口的各種實現之間切換(同樣的'鴨式')。使用模塊別名在各種實現之間切換
假設我有兩個類與一些工廠功能:
class Number1(object)
...
def fromBytes(byteArray):
...
class Number2(object)
...
def fromBytes(byteArray):
...
分別在
Number1.py
和
Number2.py
定義
,它實現了相同的功能。我想編寫與以下import
語句啓動客戶端代碼:
import Number
在我的Number.py
模塊僅僅是其中執行的選擇(之間說Number1
Number2
製成)的文件。我最初是想與Number.py
和
import Number1 as Number
在我的客戶端代碼。不過,我希望我的項目實施選項可以在我的項目的單個位置中指定,而不是在多個客戶端模塊中複製該選項。
我想定義Number.py
如下:
# choose your implementation here
import Number1
Number = Number1
然而,這種解決方案迫使我有我的客戶端模塊入手:
from Number import Number
看起來並不好。我喜歡有一個簡單的import Number
,然後打電話給我的工廠功能Number.ZERO
,Number.fromBytes(...)
例如...什麼是pythonic方式來做到這一點?
完美謝謝!我會盡快接受答案 –