如何动态加载Python类?

没有可用的函数采用完全限定的类名并返回该类。但是,我们可以定义具有此功能的函数。

示例

以下代码具有这种功能。

def get_class( s ):
    parts = s.split('.')
    module = ".".join(parts[:-1])
    n = __import__( module )
    for comp in parts[1:]:
        n = getattr(m, comp)          
    return n

该功能的一个用法示例

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