classname = "Foo"
foo = vars()[classname](Bar, 0, 4)
Hoặc có lẽ
def mkinst(cls, *args, **kwargs):
try:
return globals()[cls](*args, **kwargs)
except:
raise NameError("Class %s is not defined" % cls)
x = mkinst("Foo", bar, 0, 4, disc="bust")
y = mkinst("Bar", foo, batman="robin")
ghi chú khác trên đoạn:
*args
và **kwargs
là các thông số đặc biệt trong Python, họ có nghĩa là «một mảng args phi từ khóa» và «một dict của từ khóa args »cho phù hợp.
PEP-8 (hướng dẫn kiểu Python chính thức) đề xuất sử dụng cls
cho biến lớp học.
vars()
trả về một biến số của các biến được xác định trong phạm vi cục bộ.
globals()
trả về một biến số của các biến hiện có trong môi trường bên ngoài phạm vi địa phương.
Nguồn
2011-12-28 12:21:15
Trùng lặp. http://stackoverflow.com/questions/734970/python-reference-to-a-class-from-a-string, http://stackoverflow.com/questions/1176136/convert-string-to-python-class- đối tượng, http://stackoverflow.com/questions/553784/can-you-use-a-string-to-instantiate-a-class-in-python, v.v. –