Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีโหลดคลาส Python แบบไดนามิก (Dynamic Class Loading)

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 ดึงคลาสทีละขั้น