![](/img/trans.png)
[英]How to instantiate objects from different classes from a list of dictionaries?
[英]How to instantiate a list of classes using for loop?
如何從不同類的列表中實例化對象,每個類在不同的模塊中定義? 就像是:
a.py
:
class a():
def __init__():
print('a called')
b.py
:
class b():
def __init__():
print('b called')
main.py
import a
import b
classes = ['a', 'b']
for class in classes:
class = class()
假設您在編寫程序時了解所有類(即您沒有在運行時動態發現它們),則可以將創建內容放入列表文字中:
from a import a
from b import b
objects = [a(), b()]
如果要從某個地方獲取一些類列表,那么就像遍歷該列表並調用每個類一樣簡單。
import a
import b
classes = [a.a, b.b]
objects = [cls() for cls in classes]
這些類是否需要由字符串列表引用? 您可以這樣做:
classes = [a.a, b.b]
for cls in classes:
class_instance = cls()
如果用戶輸入了類名,則需要處理字符串,就像在最初的示例中,在字符串列表中使用類名的定義一樣。 在這種情況下,請使用eval(classname)
獲取eval(classname)
的構造函數/初始化。
from a import a
from b import b
classnames = ["a", "b"]
instances = [eval(n)() for n in classnames]
PS:您在init -definitions中忘記了self,這會導致出現以下錯誤: __init__()takes 0 positional arguments but 1 was given
init __init__()takes 0 positional arguments but 1 was given
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.