Python - 使用列表创建新变量

2 投票
2 回答
5056 浏览
提问于 2025-04-16 16:45

我想从一个列表中创建新的变量。

比如说:

mylist=[A,B,C]

我想从这个列表中创建以下这些变量:

self.varA
self.varB
self.varC

我该如何在一个循环中创建这些新变量呢?

2 个回答

0

你的问题忽略了一个重要的点,那就是变量需要有值……到底是谁来提供这些值呢?怎么提供?这里有一个解决方案,针对一个可能更清晰的问题:

通过这种方法,调用你构造函数的人可以使用字典或者关键字参数来传入名称和值。

>>> class X(object):
...     def __init__(self, **kwargs):
...         for k in kwargs:
...             setattr(self, k, kwargs[k])
...

# using a dict

>>> kandv = dict([('foo', 'bar'), ('magic', 42), ('nix', None)])
>>> print X(**kandv).__dict__
{'nix': None, 'foo': 'bar', 'magic': 42}

# using keyword args

>>> print X(foo='bar', magic=42, nix=None).__dict__
{'nix': None, 'foo': 'bar', 'magic': 42}
6
mylist=['A','B','C']
for name in mylist:
    setattr(self, name, None)

不过,这几乎总是个坏主意,值应该放在一个字典里,像这样:

self.v = {}
for name in mylist:
    self.v[name] = None

撰写回答