gpt4 book ai didi

python - 类对象 : adding attributes to class based on an input list

转载 作者:行者123 更新时间:2023-12-01 00:32:30 25 4
gpt4 key购买 nike

假设我有以下简单的类对象

class TEST:

def __init__(self, project = 'ABC', scenarios = {'A': [1,2,3], 'B': [4,5,6]}):

self.project = project
self.scenarios = scenarios


P = TEST(project = 'ABC', scenarios = {'A': [1,2,3], 'B': [4,5,6]})

print(P.scenarios)

{'A': [1, 2, 3], 'B': [4, 5, 6]}

我想要什么:使用上面的示例,我希望能够指定:

P = TEST(project = 'ABC', scenarios = {'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})

并能够返回以下输出

In [2]:P.A
Out[2]: [1, 2, 3]

In [3]:P.B
Out[4]: [4, 5, 6]

In [3]:P.C
Out[4]: [7, 8, 9]

也就是说,我想自动添加字典键作为属性并让它们返回字典的值。

我尝试过的:这类似于 Pandas DataFrame 自动添加列名作为属性并返回系列的方式。我尝试梳理后端代码,但没有成功。

This SO question很有帮助,但我无法使用它,因为我无法找到将其添加为属性的方法(例如 self.+scenario.keys() 等)

最佳答案

您可以使用 scenarios 更新实例的 __dict__:

class TEST:
def __init__(self, project='ABC', scenarios=None):
self.project = project
self.scenarios = scenarios or {'A': [1, 2, 3], 'B': [4, 5, 6]}
self.__dict__.update(self.scenarios)

>>> P = TEST(project='ABC', scenarios={'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
>>> P.A
[1, 2, 3]
>>> P.B
[4, 5, 6]
>>> P.C
[7, 8, 9]

顺便说一句,这可能不是你真正的代码,但是 avoid mutable default arguments除非你确定自己在做什么。

关于python - 类对象 : adding attributes to class based on an input list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58066361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com