[英]How to create multiple class objects and pass arguments with loop in Python?
[英]How to create multiple class objects with a loop in python?
假設你必須在 python 中創建 10 個類對象,並對它們做一些事情,比如:
obj_1 = MyClass()
other_object.add(obj_1)
obj_2 = MyClass()
other_object.add(obj_2)
.
.
.
obj_10 = MyClass()
other_object.add(obj_10)
您將如何使用循環來執行此操作,並為每個對象(如obj_1
)分配一個變量,以使代碼更短? 每個對象都應該可以在循環外訪問
obj_1.do_sth()
這個問題每天都會以不同的方式被問到。 答案是:將數據與變量名分開, 這是必讀的博文。
在這種情況下,為什么不制作一個 obj 列表呢?
objs = [MyClass() for i in range(10)]
for obj in objs:
other_object.add(obj)
objs[0].do_sth()
您可以使用列表來定義它。
objs = list()
for i in range(10):
objs.append(MyClass())
如前所述創建字典,但在這種情況下,每個鍵都有您要創建的對象名稱的名稱。 然后將該值設置為您要實例化的類,例如:
class MyClass:
def __init__(self, name):
self.name = name
self.checkme = 'awesome {}'.format(self.name)
...
instanceNames = ['red', 'green', 'blue']
# Here you use the dictionary
holder = {name: MyClass(name=name) for name in instanceNames}
然后,您只需調用持有者密鑰,您就可以使用類的所有屬性和方法。
holder['red'].checkme
輸出:
'awesome red'
使用字典來獲取沒有名稱列表的唯一名稱:
class MyClass:
def __init__(self, name):
self.name = name
self.pretty_print_name()
def pretty_print_name(self):
print("This object's name is {}.".format(self.name))
my_objects = {}
for i in range(1,11):
name = 'obj_{}'.format(i)
my_objects[name] = my_objects.get(name, MyClass(name = name))
輸出:
"This object's name is obj_1."
"This object's name is obj_2."
"This object's name is obj_3."
"This object's name is obj_4."
"This object's name is obj_5."
"This object's name is obj_6."
"This object's name is obj_7."
"This object's name is obj_8."
"This object's name is obj_9."
"This object's name is obj_10."
我希望這就是你要找的。
class Try:
def do_somthing(self):
print 'Hello'
if __name__ == '__main__':
obj_list = []
for obj in range(10):
obj = Try()
obj_list.append(obj)
obj_list[0].do_somthing()
輸出:
Hello
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.