Python—创建多个对象的简洁方法?
我对Python相当陌生,我有一个关于创建具有不同属性的多个对象的简洁方法的问题。目前,我必须具体创建如下每一个:Python—创建多个对象的简洁方法?,python,oop,object,Python,Oop,Object,我对Python相当陌生,我有一个关于创建具有不同属性的多个对象的简洁方法的问题。目前,我必须具体创建如下每一个: object1 = MyClass(property=foo,property2=bar) object1.DoStuff(variable = foobar) object2 = MyClass(property=foo,property2=bar2) object2.DoStuff(variable = foobar) object3 = MyClass(property=
object1 = MyClass(property=foo,property2=bar)
object1.DoStuff(variable = foobar)
object2 = MyClass(property=foo,property2=bar2)
object2.DoStuff(variable = foobar)
object3 = MyClass(property=foo,property2=bar3)
object3.DoStuff(variable = foobar)
我的问题是,我想用这种方式创建几十个对象,而像这样手动创建每个对象似乎是非常糟糕的编程。有没有更好的方法来创建属性稍有不同的多个对象
我想我想做的是:
list = [prop1, prop2, prop3, prop4, prop5]
while i < len(list)
object_i = MyClass(property=foo,property2=list[i])
object_i.DoStuff(variable = foobar)
i+=1
list=[prop1,prop2,prop3,prop4,prop5]
而我
让它创建5个名为object_1、object_2等的对象
这可能吗 使用元组解包和列表理解
object_1, object_2, ... = [MyClass(property=foo, property2=x) for x in (bar,
bar2, ...)]
如果您有名称为
object\u 1
、object\u 2
等的对象,并且希望对所有这些对象执行公共操作,这清楚地表明您实际上应该使用列表objects
,并使用循环来执行公共操作
props = <some list here>
objects = [MyClass(property=foo, property2=prop) for prop in props]
for obj in objects:
obj.do_stuff(variable=foobar)
props=
objects=[MyClass(property=foo,property2=prop)用于props中的prop]
对于对象中的obj:
对象do_stuff(变量=foobar)
另一种方法是借助字典使用更有意义的对象定义。如果您只关心对象1、对象2等,那么Sven Marnach的解决方案效果很好。但是如果您的对象在以后实际具有个人重要性呢?引用它们会变得不直观,你会很快迷失方向。以下是一些示例代码,可在这方面为您提供帮助:
objectNames = ("foo", "bar", "cat", "mouse")
objectDictionary = {}
for name in objectNames:
objectDictionary[name] = MyClass(property=foo,property2=bar)
for obj in objectDictionary.itervalues():
obj.DoStuff(variable = foobar)
如果您希望某个特定实例执行与其他实例不同的操作,此解决方案使此操作变得简单:
objectDictionary["bar"].DoSomethingElse(variable = cat)
你试过用字典来代替吗?你应该。@vartec不,我早就过了家庭作业阶段…只是编程新手!谢谢这是有道理的。然后你怎么做object_1.DoStuff,object_2.DoStuff等等?当然。但是如果你要对每一个物体都这样做,那么你应该这样做。谢谢。当你看到它时,它看起来真的很明显!:-)