gpt4 book ai didi

java - 针对现有 Java API 的 Python API 设计

转载 作者:行者123 更新时间:2023-11-30 07:19:30 25 4
gpt4 key购买 nike

我是 python 新手,我必须设计一个类似于现有 Java API 的 Python API(版本 - 2.7)

Python 版本 - 2.7

Java API如下

public interface Process<T> {

Future<T> create(Client<T> client)

//Other methods
}

public interface Client<T> extends Serializable {

T execute(ClientContext c)

//Other methods
}

public interface ClientContext {

File createFile(String path)

//Other methods
}

我提出的等效 Python API 设计是

方法1

class Process:
__metaclass__ = ABCMeta

@abstractmethod
def create(self, client):
pass

class Client:
__metaclass__ = ABCMeta

@abstractmethod
def execute(self, context):
pass

class ClientContext:
__metaclass__ = ABCMeta

@abstractmethod
def createFile(self, path):
pass

方法2

我可以使用闭包直接将上下文传递给Process类的create函数,这样我就可以消除Client类

注意 Process 类的 create 方法将处理异步任务,可以使用 python 中的并发.futures 包来完成。

我想知道这两种方法中哪一种更好

也对更好的方法持开放态度。

最佳答案

一般来说,我会使用闭包来创建函数模板,就像我想生成具有不同变量的同一模板的许多函数的情况

示例

def add(x):
def addto(y):
return x+y
return addto

addto5 = add(5)
print addto5(1)
#will print 6

在您的情况下,闭包看起来不是一个好的选择,因为在闭包中您只能更改变量,但函数过程(模板)是不变的,而在具有继承的普通类中它将给您更多的自由

关于java - 针对现有 Java API 的 Python API 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37823533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com