Python ไม่มีฟังก์ชันสำเร็จรูปที่รับ Fully Qualified Class Name แล้วคืนคลาส แต่สามารถเขียนฟังก์ชันเองได้
ตัวอย่างฟังก์ชัน
def get_class(class_path):
parts = class_path.split('.')
module = ".".join(parts[:-1])
m = __import__(module)
for comp in parts[1:]:
m = getattr(m, comp)
return m
ตัวอย่างการใช้งาน
import datetime
def get_class(cls):
parts = cls.split('.')
module = ".".join(parts[:-1])
m = __import__(module)
for comp in parts[1:]:
m = getattr(m, comp)
return m
print(get_class('datetime.datetime').now())
ผลลัพธ์
2018-01-23 14:04:09.843000
ฟังก์ชันนี้แยก Module Path และ Class Name แล้ว Import โมดูลและใช้ getattr ดึงคลาสทีละขั้น