我为配置选项创建了一个自定义描述符,可用于创建如下类:
class Configuration(SomeSpecificBackend):
basedir = ConfigurationProperty('basedir', int)
logfile = ConfigurationProperty('logfile', Path)
实际的实例包含更多的属性。问题是我想要一个__init__
,它允许我在构造时初始化我想要的任何属性,比如:
由于在实践中有更多的属性,这变得很难维护,而且由于这里的模式非常规则,我想知道是否有一种方法可以自动提供此功能。在
我的初稿是这样的:
^{3}$这可以满足我的需要,但在某些情况下甚至更大,因为它还初始化了不是配置属性的属性,这可能会导致其他基类出现问题。我不知道怎么解决。type(getattr(self, key))
不生成ConfigurationProperty
,而是生成当前值的类型。在
此外,它将所有kwargs
视为要初始化的配置属性。其中一些可能是其他基类构造函数的参数,所以我需要能够区分这些。在
那么,有没有一种方法可以以通用的方式和安全的方式提供这种功能呢?在
只需使用
locals
:另一方面,要进一步自动化此过程,可以引入映射配置参数->键入并动态创建和填充属性:
^{pr2}$相关问题 更多 >
编程相关推荐