我有一段代碼,看起來像這樣的工作:替換在Python
# This code is not modifiable
from package import distance as dist
class A:
def calculate(self):
...
# call to dist()
...
我的代碼:
from package import A
a = A()
a.calculate()
正如你所看到的,distance()
功能在進口代碼的頂部。類A
致電distance()
函數。它是這樣做的,在幾個地方,不僅在calculate()
。
我想讓班級使用我的自定義距離功能。但是,該類不允許我在構造函數中傳遞它,並且我無法修改A
的代碼。我將如何做到這一點?這可能通過子類化?我tryed以下,沒有工作:
from package import A
class B(A):
def __init__(self):
from mypackage import mydistance as dist
return super().__init__()
b = B()
b.calculate()
把'package'的另一個版本在Python路徑更早?你可以改變'package'嗎? –
@ Jean-FrançoisFabre不,我不能改變包裝。它來自於scipy https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.spatial.distance.cdist.html – r0f1
Python是一種動態語言,它的類,函數和可執行文件被存儲在查找字典中可以被訪問和修改。 試着做一些像'import package; package.dist = lambda x:10' 然後再次嘗試運行代碼,看看它是否已更新 – immortal