我想知道如果將模塊對象傳遞給需要它的類或對象,而不是使用import
可能不是一個壞主意,因爲它避免了對這些模塊的嚴重依賴。Python - '導入'或傳遞模塊作爲參數?
我想知道是否有人比我更瞭解Python Zen可能能夠解釋爲什麼這是一個可怕/不可怕的想法?
我想知道如果將模塊對象傳遞給需要它的類或對象,而不是使用import
可能不是一個壞主意,因爲它避免了對這些模塊的嚴重依賴。Python - '導入'或傳遞模塊作爲參數?
我想知道是否有人比我更瞭解Python Zen可能能夠解釋爲什麼這是一個可怕/不可怕的想法?
你在說什麼叫做dependency injection,並且被認爲是讓你的代碼可測試的好習慣。我不認爲有什麼關於Python的東西會讓它變得不太規範或是一種不好的做法。
還有其他的方法可以做到這在Python,例如通過導入依賴於某種標誌你在通過不同的模塊:您要使用的是模塊
class Foo(object):
def __init__(self, testing=False):
if testing:
import module_test as module
else:
import module
self.module = module
但經過參考更靈活,更好地分離問題,並且不比傳遞對希望使用的類或實例(或字符串或整數)的引用更爲Pythonic。
對於普通(非測試)的使用情況,您可以使用默認參數值:
class Foo(object):
def __init__(self, module=None):
if not module:
import module
self.module = module
我想這是一個直覺,移除進口是有點'錯誤' – Magnus 2012-03-13 17:55:51
如果有問題的類可以使用多種不同的模塊中的一個,那麼它可能是有意義的傳遞在你想要使用的那個中。
但是,在我到目前爲止遇到的每種情況下,所需的模塊都是確定的,因此使用import
將是首選。
它看起來像依賴注入,實際上也是一個好主意。但是,您多長時間需要一個模塊,而不是一個或兩個函數/類? – delnan 2012-03-13 17:54:01