我想将一个变量传递给一个对象的构造函数,并根据该值获取一个或多个对象。类似的东西:
class MyClass():
def __init__(self,n_objects):
#Should return n_objects of MyClass
虽然因为我需要返回一个列表(我认为)但是self是类型为“MyClass”的东西,所以它似乎不太合适。我错过了什么?
答案 0 :(得分:2)
构造函数只返回您要创建的内容的单个引用,因此您无法以这种方式执行此操作。你需要的是将这个列表放在外面:
result = [MyClass() for i in xrange(n_objects)]
然后围绕它创建一个包装函数。
请注意xrange
适用于python 2,它在python 3中已重命名为range
。
如果你必须坚持保持"封装"在类中,您可以定义一个类方法。天真的例子:
>>> class Foo(object):
... def __init__(self):
... self.bar = 1
... @classmethod
... def Copies(cls, n):
... return [cls() for i in xrange(n)]
...
>>> Foo()
<__main__.Foo object at 0x7f2059ac1910>
>>> Foo.Copies(3)
[<__main__.Foo object at 0x7f2059ac19d0>, <__main__.Foo object at 0x7f2059ac1990>, <__main__.Foo object at 0x7f2059ac1a10>]