[英]create objects on runtime in python
如何在 python 的運行時創建對象實例?
說我有 2 節課:
class MyClassA(object):
def __init__(self, prop):
self.prop = prop
self.name = "CLASS A"
def println(self):
print self.name
class MyClassB(object):
def __init__(self, prop):
self.prop = prop
self.name = "CLASS B"
def println(self):
print self.name
和一個字典
{('a': MyClassA), ('b': MyClassB)}
我如何創建我的兩個類之一的動態實例,具體取決於我選擇“a”或“b”。
這樣的:
somefunc(str):
if 'a': return new MyClassA
if 'b': return new MyClassB
在調用時獲得“CLASS B”: somefunc('a').println
但以更優雅和動態的方式(比如我在運行時向字典添加更多類)
您可以創建一個調度程序,它是一個將您的鍵映射到類的字典。
dispatch = {
"a": MyClassA,
"b": MyClassB,
}
instance = dispatch[which_one]() # Notice the second pair of parens here!
您可以通過調用 class 創建一個 class 實例。 您的 class dict {('a': MyClassA), ('b': MyClassB)}
返回類; 所以你只需要調用 class:
classes['a']()
但我覺得你想要更具體的東西。 這是dict
的子類,當使用鍵調用時,它會查找關聯的項目並調用它:
>>> class ClassMap(dict):
... def __call__(self, key, *args, **kwargs):
... return self.__getitem__(key)(*args, **kwargs)
...
>>> c = ClassMap()
>>> c['a'] = A
>>> c['b'] = B
>>> c('a')
<__main__.A object at 0x1004cc7d0>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.