Python의 동적 클래스 로딩: Java Class.forName()의 대안
Java에서는 Class.forName() 메서드를 사용하여 런타임 시 클래스의 동적 로딩. 고유한 유연성을 갖춘 Python은 이 작업을 수행하기 위한 더 간단한 접근 방식을 제공합니다.
Python의 동적 클래스 로딩
Java와 달리 Python은 내부 검사 및 동적에 대한 기본 지원을 제공합니다. 수업 로딩. 내장된 import 함수를 사용하여 모듈을 동적으로 가져온 다음 getattr() 함수를 사용하여 해당 모듈 내의 특정 클래스에 액세스할 수 있습니다.
함수 예시
다음은 Java의 Class.forName() 기능을 모방한 함수 예제입니다.
<code class="python">def get_class(kls): parts = kls.split('.') module = ".".join(parts[:-1]) m = __import__(module) for comp in parts[1:]: m = getattr(m, comp) return m</code>
사용
로드 및 인스턴스화 동적으로 클래스를 생성하려면 다음 단계 순서를 사용할 수 있습니다.
예를 들어 다음 코드는 사용법을 보여줍니다.
<code class="python">D = get_class("datetime.datetime") assert D == datetime.datetime a = D(2010, 4, 22) assert a == datetime.datetime(2010, 4, 22, 0, 0)</code>
추가 고려 사항
Java와 달리 Class. forName() 메서드는 클래스를 찾을 수 없는 경우 ClassNotFoundException을 발생시킵니다. Python은 이 경우에 대한 특정 예외를 제공하지 않습니다. 대신, 모듈을 가져올 수 없는 경우 import 함수는 None을 반환합니다.
위 내용은 Python에서 동적 클래스 로딩을 달성하는 방법: Java의 Class.forName()에 대한 대안?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!