如何在Python中为具有自定义描述符的类生成UuInit_Uu?

2024-09-27 00:19:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我为配置选项创建了一个自定义描述符,可用于创建如下类:

class Configuration(SomeSpecificBackend):
    basedir = ConfigurationProperty('basedir', int)
    logfile = ConfigurationProperty('logfile', Path)

实际的实例包含更多的属性。问题是我想要一个__init__,它允许我在构造时初始化我想要的任何属性,比如:

^{pr2}$

由于在实践中有更多的属性,这变得很难维护,而且由于这里的模式非常规则,我想知道是否有一种方法可以自动提供此功能。在

我的初稿是这样的:

^{3}$

这可以满足我的需要,但在某些情况下甚至更大,因为它还初始化了不是配置属性的属性,这可能会导致其他基类出现问题。我不知道怎么解决。type(getattr(self, key))不生成ConfigurationProperty,而是生成当前值的类型。在

此外,它将所有kwargs视为要初始化的配置属性。其中一些可能是其他基类构造函数的参数,所以我需要能够区分这些。在

那么,有没有一种方法可以以通用的方式和安全的方式提供这种功能呢?在


Tags: path方法功能属性选项方式基类configuration
1条回答
网友
1楼 · 发布于 2024-09-27 00:19:01

只需使用locals

def __init__(self, basdir=None, logfile=None):
    for name, value in locals().items():
        if values is not None and hasattr(self, name):
            setattr(self, name, value)

另一方面,要进一步自动化此过程,可以引入映射配置参数->键入并动态创建和填充属性:

^{pr2}$

相关问题 更多 >

    热门问题