【发布时间】:2021-01-06 21:42:39
【问题描述】:
假设有几个类
class Order:
def create_basic_order(self):
pass
# something here
def create_difficult_order(self):
pass
# something here
class Point:
def create_full_point(self):
pass
# something here
def create_limited_point(self):
pass
# something here
并且客户端以json格式发送带有特定命令的请求。例如{"command": "create_limited_point"}。
并且服务器应该执行适当的命令。在这种情况下:Point().create_limited_point()。
所有命令都不同。
没有“if 构造”的最明显方法是这样的:
class App(Order, Point):
pass
# maybe something here
# Code to handle client request
command = 'create_limited_point'
a = App()
method_to_call = getattr(a, command)
method_to_call()
App 类收集了客户端可以使用的所有方法。 这是完成手头任务的好方法吗?
【问题讨论】:
-
您能提供更多信息吗?当这个例子实际上什么也没做时,真的很难说什么是合适的。您可以通过继承进行组合并搜索组件。您可以进行从名称到可调用的映射,并完全跳过类结构。您可以进行类似的映射,但在所有类上使用
dir自动创建它。您可以使用装饰器来注册每个命令。你可以... -
@MisterMiyagi 主要问题是我需要执行客户端发送的命令。这可以通过将方法(命令)放在一个类中并按名称调用它来完成。但是这个类可以随着客户想要执行的命令的增长而增长。为此,我可以将类拆分为逻辑子类。但是如何理解我需要从哪个类调用客户端方法呢?
-
更多信息需要给出一个好的答案,尤其是关于你的课程。它们是否仅作为命令的集合存在,或者即使没有命令,它们也会是离散的类?
-
想法是用户给出一个命令,这个命令必须被执行。命令本身可以在逻辑上进行划分。例如,一些命令指的是一个订单,一些指的是一个点。因此,问题是如何正确分解。
标签: python inheritance design-patterns django-rest-framework multiple-inheritance