Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để chuyển đổi một chuỗi thành một đối tượng lớp Python?


Cho một chuỗi làm đầu vào của người dùng cho một hàm python, tôi muốn lấy một đối tượng lớp ra khỏi nó nếu có một lớp có tên đó trong không gian tên được xác định hiện tại.

Ví dụ

class Foobar:
    pass
print eval("Foobar")
print type(Foobar)

Đầu ra

 __main__.Foobar
<type 'classobj'>

Một cách khác để chuyển đổi một chuỗi thành đối tượng lớp như sau

Ví dụ

import sys
class Foobar:
    pass
def str_to_class(str):
    return getattr(sys.modules[__name__], str)
print str_to_class("Foobar")
print type(Foobar)

Đầu ra

 __main__.Foobar
<type 'classobj'>