Python không có hàm built-in nhận fully qualified class name và trả về class. Nhưng ta tự viết hàm helper.
Hàm tải class động
def get_class(class_path):
\"\"\"
class_path: 'module.submodule.ClassName'
\"\"\"
parts = class_path.split('.')
module_name = '.'.join(parts[:-1])
class_name = parts[-1]
module = __import__(module_name, fromlist=[class_name])
return getattr(module, class_name)
Ví dụ sử dụng
import datetime
# Lấy class datetime.datetime
DateTimeClass = get_class('datetime.datetime')
print(DateTimeClass.now()) # 2024-01-15 10:30:45.123456
Cách hiện đại (Python 3.7+): dùng importlib
import importlib
def get_class_modern(class_path):
module_name, class_name = class_path.rsplit('.', 1)
module = importlib.import_module(module_name)
return getattr(module, class_name)
Ưu điểm importlib: Xử lý import tốt hơn, tránh lỗi submodule.