我试图为我创建的类创建10个实例,但我想知道是否有一种方法可以做到这一点,而不必反复设置所有对象的属性,因为它看起来不太好。我想为每个实例设置不同的属性。下面是我的代码目前正在做的一个示例
from file import MyClass
L = [MyClass() for x in range(10)]
L[0].SetAttribute1('...')
L[0].SetAttribute2('...')
L[0].SetAttribute3('...')
L[0].SetAttribute4('...')
L[0].SetAttribute5('...')
L[0].SetAttribute6('...')
...
L[9].SetAttribute1('...')
L[9].SetAttribute2('...')
L[9].SetAttribute3('...')
L[9].SetAttribute4('...')
L[9].SetAttribute5('...')
L[9].SetAttribute6('...')
MyClass
应该定义一个__init__
方法来设置属性,这样您就可以定义一个类似MyClass(..., ..., ..., ..., ..., ...)
的实例。然后您可以定义您的列表,而不是列表理解,而是一个更简单的列表文字你可以这样写。它只不过是将所有参数分隔到一个地方,但您可能会发现它很有用
zip
生成一个类似[(L[0], (a1, a2, ..., a6)), ..., (L[9], (j1, j2, ..., j6))]
的列表。假设obj == L[0]
、m == "SetAttribute1"
和arg=a1
,行getattr(obj, m)(arg) == getattr(L[0], "SetAttribute1")(a1) == L[0].SetAttribute(a1)
有关
zip
和getattr
的更多信息,请参阅Python文档如果列表中所有实例的每个属性都相同,则使用循环。如果它们不同,则将值存储在文件或数据库中,然后使用循环读取数据
你可以把你的属性放在一个列表中,然后在一个循环中设置它们
相关问题 更多 >
编程相关推荐