我想对我的一个 api 类进行抽象来解决以下问题。假设我有一个基类,例如:
class AbstractAPI(ABC):
@abstractmethod
def create(self):
pass
@abstractmethod
def delete(self):
pass
还有一个具体的类:
class API(AbstractAPI):
def create(self):
print("create")
def delete(self):
print("delete")
当请求传入时,我无权访问我的 API 实例。既由于多线程又避免一些循环导入。那时我确实知道稍后要调用哪个方法。所以我的计划是将 AbstractAPI 的函数指针放入队列中,然后等待,直到我能够访问 API 实例。
function_pointer=AbstractAPI.create
# later on ...
function_pointer(ConcreteAPIInstance)
此时调用API实例上的函数指针,ba da bim,ba daoom。那是行不通的。当然,将 AbstractAPI 的函数指针调用到 API 实例上会调用空的 AbstractAPI 方法。什么也没发生。有办法让这个工作吗?
您可以编写一个函数来调用给定对象上的命名
function_pointer=AbstractAPI.create
方法,而不是直接引用抽象类方法 create()
。
function_pointer = lambda api : api.create()
或
def function_pointer(api):
return api.create()