我正在编写一个Python客户端,该客户端会调用具有树状结构的HTTP端点。在这个结构中,几乎任何层级都可能是一个端点。我希望能够在该层次结构中的任意节点处进行访问,并根据定义的常量动态构建字符串路径。
例如,我希望 Endpoints.CONFIGURATION
能够扩展为 /configuration
,同时 Endpoints.CONFIGURATION.ACTIVE
能够扩展为 /configuration/active
。
为了减少代码量,我希望建立一种程序化的方式实现这一目标。此外,我还希望避免让终端用户调用函数来获取这些路径,因此考虑一个所有路径均继承自某个基类,并重写 __str__
方法的理想方案可能是合适的。
我已经尝试利用Python的类系统来实现类似功能。以上述例子为例,我编写的代码如下:
class EndpointClass:
class CONFIGURATION:
ACTIVE = '/configuration/active'
然而,这种方式并未实现我所期望的功能,即.CONFIGURATION
自动扩展成/configuration
。另外,“ACTIVE”路径值是手动编写的,而我更希望它能基于所在类自动构建。
我也曾考虑过使用字典解决方案,但据我所知,字典方式无法支持点标记法(dot notation)及自动补全,并且可能无法返回层次结构任意级别的值。
我还参考了Stack Overflow上的一个问题:“在Python中定义(可能带层级关系的)一组常量的最佳方法是什么?”,但其中的方法并不适用于我可能遇到的深度层级,并且不支持自动扩展以及在不同层级停止时仍能得到有效返回值。