【问题标题】:How to instantiate and populate class variables using a list?如何使用列表实例化和填充类变量?
【发布时间】:2021-12-29 10:50:48
【问题描述】:

我想在一个类中使用一个列表来实例化变量。这就是我想要实现的目标:

my_list = ['apple', 'banana', 'mango']
my_object = my_class(my_list)
vars(my_object) => {'apple': 'apple', 'banana': 'banana', 'mango': 'mango'}

my_list = ['pear', 'melon']
my_object = my_class(my_list)
vars(my_object) => {'pear': 'pear', 'melon': 'melon'}

是否有任何方法可以使用在我为类编写代码时可能不知道的列表自动实例化变量?

【问题讨论】:

  • 不幸的是,我不相信这是可能的。你可能不得不接受dict

标签: python list class pydantic


【解决方案1】:

你可以的

class MyClass:
    def __init__(self, _list):
        for value in _list:
            setattr(self, value, value)

但你不应该这样做,你的用例是什么?

【讨论】:

  • 我正在使用 pydantic 验证。我想将可能值列表传递给 pydantic 中的枚举类,然后使用该类进行验证
【解决方案2】:

我只能得到以下代码:

my_list = ["apple", "banana", "mango"]


class my_class:
    def __init__(self, my_list: list) -> None:
        pass

my_object = type("my_class", (), {k: k for k in my_list})
print(vars(my_object))

【讨论】:

  • @Speedlulu,做得很完美
猜你喜欢
  • 1970-01-01
  • 2019-08-23
  • 2021-02-13
  • 2019-12-15
  • 2020-11-04
  • 1970-01-01
  • 2016-03-11
  • 2022-01-08
  • 2015-11-18
相关资源
最近更新 更多