擅长:python、mysql、java
<p><code>MyClass</code>应该定义一个<code>__init__</code>方法来设置属性,这样您就可以定义一个类似<code>MyClass(..., ..., ..., ..., ..., ...)</code>的实例。然后您可以定义您的列表,而不是列表理解,而是一个更简单的列表文字</p>
<pre><code>L = [
MyClass(...),
MyClass(...),
...,
MyClass(...)
]
</code></pre>
<p>你可以这样写。它只不过是将所有参数分隔到一个地方,但您可能会发现它很有用</p>
<pre><code>L = [MyClass() for x in range(10)]
# Hard-coding each name, since I doubt there's any real pattern
# to the names
methods = ["SetAttribute1", ..., "SetAttribute6"]
# All the arguments
all_args = [
(a1, a2, ..., a6), # for object 1
(b1, b2, ..., b6), # for object 2
...,
(j1, j2, ..., j6), # for object 10
]
for obj, args in zip(L, all_args):
for m, arg in zip(methods, args):
getattr(obj, m)(arg)
</code></pre>
<p><code>zip</code>生成一个类似<code>[(L[0], (a1, a2, ..., a6)), ..., (L[9], (j1, j2, ..., j6))]</code>的列表。假设<code>obj == L[0]</code>、<code>m == "SetAttribute1"</code>和<code>arg=a1</code>,行<code>getattr(obj, m)(arg) == getattr(L[0], "SetAttribute1")(a1) == L[0].SetAttribute(a1)</code></p>
<p>有关<code>zip</code>和<code>getattr</code>的更多信息,请参阅Python文档</p>