簡體   English   中英

如何在 python 中為對象覆蓋 function

[英]How to override function in python for objects

我在 python 2.7 中有一個項目。 用戶會給我一個 function 實現,我將用用戶的實現覆蓋我的基本 class function。 會有很多用戶。

class Base():

    def my_fun(self,x,y,z):
        ## to be overriden by user's function

from user_defined import user_function

base = Base()
base.my_fun = user_function

我是 python 的新手,如何在 python 中實現虛擬 function 之類的東西,或者實現此目的的最佳方法是什么。 此外,要覆蓋 function,我必須導入用戶定義了 function 的所有文件。 這如何在 for 循環中完成?

實例綁定方法的一些方法,選擇其中一種,循環函數,綁定。

base.my_fun = user_function.__get__(base)

第二種方式:

import types
base.my_fun = types.MethodType(user_function, base)

第三種方式:

from functools import partial
base.my_fun = partial(user_function, base)

最后一種方式:

def bind(instance, method):
    def binding_scope_fn(*args, **kwargs):
        return method(instance, *args, **kwargs)
    return binding_scope_fn

base.my_fun = bind(base, user_function)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM