일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터구조
- 소프트웨어공학
- 보안
- 자바스크립트
- 데이터베이스
- 사이버보안
- 머신러닝
- 빅데이터
- 2
- 데이터과학
- 네트워크보안
- 프로그래밍언어
- 컴퓨터비전
- 컴퓨터과학
- 인공지능
- 딥러닝
- 컴퓨터공학
- 알고리즘
- 클라우드컴퓨팅
- 웹개발
- 소프트웨어
- Yes
- 데이터분석
- 프로그래밍
- 네트워크
- 자료구조
- I'm Sorry
- 코딩
- 파이썬
- 버전관리
- Today
- Total
스택큐힙리스트
메소드 매개변수 이름을 얻는 방법은 무엇인가요? 본문
함수 #(function)$$#^!*!$&가 다음과 같이 정의되어 있다고 가정하자.
def a_method(arg1, arg2):
pass
a_method에서부터 인수 이름을 어떻게 가져올 수 있을까요? 예를들어 문자열 튜플 형식으로, (arg1, arg2)와 같이 말이죠.
답변 1
inspect 모듈을 살펴보세요 - 이것은 다양한 코드 객체 속성의 검사를 대신 해줍니다.
>>> inspect.getfullargspec(a_method)
(['arg1', 'arg2'], None, None, None)
다른 결과는 *args와 **kwargs 변수의 이름과 제공된 기본값입니다. 즉,
>>> def foo(a, b, c=4, *arglist, **keywords): pass
>>> inspect.getfullargspec(foo)
(['a', 'b', 'c'], 'arglist', 'keywords', (4,))
일부 호출 가능한 객체는 Python의 특정 구현에서는 내부 검사가 불가능할 수 있음에 유의하십시오. 예를 들어, CPython에서 C에서 정의된 일부 내장 함수는 인수에 대한 메타데이터를 제공하지 않습니다. 결과적으로, 내장 함수에 대해 inspect.getfullargspec()을 사용하면 ValueError이 표시됩니다.
Python 3.3 이후부터, 호출 가능한 객체의 호출 서명을 확인하기 위해 inspect.signature()를 사용할 수 있습니다:
>>> inspect.signature(foo)
답변 2
메서드 매개변수 이름 가져오기 방법을 알아보려면 메서드의 매개변수 형식 정보를 분석해야 합니다. 매개변수 이름은 메서드의 논리적 의미를 나타내며 코드 가독성을 높이기 위해 매우 중요합니다.메서드 매개변수 이름을 가져오는 가장 쉬운 방법은 메서드 정보를 참조하여 매개변수 이름을 가져오는 것입니다. 이를 위해서는 Reflection API를 사용하여 메서드에 대한 정보, 즉 Method 객체를 얻어야 합니다. 이 Method 객체를 사용하여 Parameter 객체를 가져올 수 있으며 Parameter 객체를 사용하여 매개변수 이름을 가져올 수 있습니다.
또한, Annotation Processing Tool을 사용하여 메서드의 매개변수 이름을 가져올 수도 있습니다. 이를 위해서는 메서드에서 사용되는 Annotation을 분석하여 매개변수 이름을 가져오는 Processor를 작성해야 합니다.
매개변수 이름이 없는 메서드의 경우, 자바 컴파일러는 매개변수의 이름 대신에 순서대로 arg0, arg1, arg2와 같은 이름을 생성합니다. 하지만, 컴파일러 옵션을 이용하여 매개변수 이름을 보존할 수 있으므로 매개변수 이름을 필요로 하는 경우 이 옵션을 사용하는 것이 좋습니다.
메서드 매개변수 이름은 코드 가독성을 높이기 위해 중요합니다. 따라서, 메서드에 매개변수 이름이 없다면 Reflection API를 사용하거나 Annotation Processing Tool을 이용하여 매개변수 이름을 가져와야 합니다. 또한, 컴파일러 옵션을 이용하여 매개변수 이름을 보존하는 것이 좋습니다.