Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

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