>백엔드 개발 >파이썬 튜토리얼 >함수 이름이 동적일 때 Python에서 모듈 함수를 어떻게 호출할 수 있나요?

함수 이름이 동적일 때 Python에서 모듈 함수를 어떻게 호출할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-22 13:26:14327검색

How Can I Call a Module Function in Python When the Function Name is Dynamic?

동적 함수 이름 지정으로 모듈 함수 호출

모듈의 함수를 호출해야 하지만 함수가 호출되지 않는 시나리오를 상상해 보세요. 이름은 동적으로 생성되어 문자열로 저장됩니다. 그러면 다음과 같은 질문이 떠오릅니다. 어떻게 프로그래밍 방식으로 이를 달성할 수 있을까요?

모듈 및 함수 이름을 문자열로 사용하는 동적 함수 호출

이 문제에 대한 해결책은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.