簡體   English   中英

如何使用for循環實例化類列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM