【发布时间】:2016-05-01 11:50:48
【问题描述】:
class OurAtt():
def __init__(self):
pass
class OurClass:
def __init__(self):
self.__OurAtt = OurAtt()
@property
def OurAtt(self):
return self.__OurAtt
@OurAtt.setter
def OurAtt(self, val):
if val < 0:
self.__OurAtt = 0
elif val > 1000:
self.__OurAtt = 1000
else:
self.__OurAtt = val
x = OurClass()
x.OurAtt.Var1 = 1
print x.OurAtt.Var1
问题:
如何创建一个包含 100 个变量的列表,例如 x.OurAtt.Var1、x.OurAtt.Var2 .. x.OurAtt.Var100 并为其分配初始值 1,2 ....100。
是否可以对 x.OurAtt.Var[1..100] = [1..100] 执行类似操作?基本上需要有属性的List。
【问题讨论】:
-
您可以使用内置方法
exec: docs.python.org/3/library/functions.html#exec 来实现这一点,但我建议不要这样做。你的用户故事到底是什么?最终,您可以创建一个字典,因此您将拥有键和值来代替变量。 -
@cezar 非常感谢。条件是仅使用标量或列表或元组而不是字典。你能帮忙吗?
-
您可以执行以下操作:
for i in range(1, 101): exec('OurAtt.Var{0} = {0}'.format(i))。这将为您提供从 OurAtt.Var1 到 OurAtt.Var100 的变量,初始值为 1 到 100。我仍然认为这不是一个好主意。
标签: python properties getter-setter