동적 함수 이름 지정으로 모듈 함수 호출
모듈의 함수를 호출해야 하지만 함수가 호출되지 않는 시나리오를 상상해 보세요. 이름은 동적으로 생성되어 문자열로 저장됩니다. 그러면 다음과 같은 질문이 떠오릅니다. 어떻게 프로그래밍 방식으로 이를 달성할 수 있을까요?
모듈 및 함수 이름을 문자열로 사용하는 동적 함수 호출
이 문제에 대한 해결책은 Python의 getattr 함수에 있습니다. . getattr은 속성(또는 메소드) 이름을 나타내는 문자열과 객체를 가져와 속성 값을 반환합니다. 이 개념을 모듈에 적용하면 모듈 참조와 함수 이름을 문자열로 전달하여 해당 함수를 호출할 수 있습니다.
다음 예를 고려하세요.
import foo func_name = "bar" bar = getattr(foo, func_name) result = bar()
이 예에서 모듈 foo 기능 표시줄이 포함되어 있습니다. getattr을 사용하여 foo 모듈과 문자열 "bar"를 전달하여 bar 함수를 검색합니다. 마지막으로 bar를 호출하고 결과에 해당 반환 값을 저장합니다.
함수를 넘어서: 클래스 메서드의 동적 호출
getattr의 다용성은 모듈 수준 함수 호출을 뛰어넘습니다. . 클래스 인스턴스 바인딩 메서드, 모듈 수준 메서드, 클래스 메서드 등에 액세스하는 데 사용할 수도 있습니다.
클래스 메서드 호출의 예:
class MyClass: @classmethod def classmethod_foo(cls, arg): pass my_class_instance = MyClass() classmethod_foo = getattr(my_class_instance, "classmethod_foo") classmethod_foo(arg)
이 예는 인스턴스에서 클래스 메소드 classmethod_foo의 동적 호출을 보여줍니다. MyClass.
참고:
Python 버전 3.10 이상에서는 속성에 동적으로 액세스하기 위한 추가 유연성과 편의성을 제공하는 새로운 getattr 별칭 getattrs를 도입합니다.
위 내용은 함수 이름이 동적일 때 Python에서 모듈 함수를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!