![](/img/trans.png)
[英]How do I dynamically create instances of all classes in a directory with python?
[英]Create dynamically named classes instances in Python
我需要根據變量的內容創建一個特定類的新實例。
例如,創建一個名為“ Foo”的類的實例,無論“ s”變量的內容是什么。 這就是我嘗試過的
class Foo:
pass
s = 'bar'
eval(s) = Foo
上面的代碼返回“無法分配給函數調用”錯誤。
在這種情況下,我需要它在Foo類中創建一個名為“ bar”的實例,但我還需要能夠將“ s”變量更改為任何字符串,並使它仍然可以工作。
如果我還有另一種方法來創建類實例,然后再使用也可以使用的“ s”變量來訪問它們。
通過創建預定義的字典可以回答很多類似的問題,但是在我的情況下,這些字典必須是幾百個項目,並且需要手寫,因此不切實際,而且不是很Python。 我需要完全動態地創建和訪問該實例,希望按名稱命名,但是如果還有另一種方式,我也可以這樣做。
這應該做。
def make_class(name):
class_text = """
global {} # Makes the class object global.
class {}: # You put the class here.
pass
""".format(name, name) # Formats the text. There are a couple different ways to do this.
exec(class_text)
例:
>>> make_class("Foo")
>>> make_class("Bar")
>>> Foo()
<__main__.Foo object at 0x7fedebcda748>
>>> Bar()
<__main__.Bar object at 0x7fedebcda8d0>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.