我正在编写一个Python客户端,该客户端将访问HTTP端点。这些端点具有树状结构,其中几乎任何节点都可能是一个端点。我希望能够在该层次结构的任意位置调用并根据定义的常量构建字符串。
例如,我希望Endpoints.CONFIGURATION
能够扩展为/configuration
,同时Endpoints.CONFIGURATION.ACTIVE
能够扩展为/configuration/active
。
为了减少代码量,我希望以编程方式实现这一目标,并且不希望用户必须调用函数来完成这个任务,因此理想情况下,可以通过某种继承自某个类并重写__str__
方法的方式来实现。
我尝试利用Python类系统实现类似功能。以上述示例为例,我编写的代码如下:
class EndpointClass:
class CONFIGURATION:
ACTIVE = '/configuration/active'
然而,这段代码并未实现所需的功能,即需要.CONFIGURATION
扩展为/configuration
,而且我还必须手动编写/configuration
,而我更倾向于基于它所在的类自动展开。
我考虑过基于字典的解决方案,但据我所知,这种方法不支持点表示法(dot notation)和自动补全,并且可能无法返回层次结构中任意层级的值。
我也参考了What is the best way to define a (maybe hierarchical) set of constants in python?,但它并不适用于像我这样深的层级结构,也不支持自动展开,而且不能在层次结构的不同层级停止并返回相应结果。