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。
答案 0 :(得分:1)
不要创建单独的varX
属性,不。您可以使用__getitem__
和__setitem__
方法创建新对象,而是使用x.your_attr[X]
订阅表示法:
class ListLike(object):
def __init__(self):
self._values = list(range(101))
def __len__(self):
return len(self._values)
def __getitem__(self, index):
return self._values[index]
def __setitem__(self, index, value):
if not 0 <= index < len(self):
raise IndexError(index)
self._values[index] = max(0, min(1000, val))
然后将其用作您的属性:
class Foo(object):
def __init__(self):
self.bar = ListLike()