반응형
질문
나는 클래스 내의 메소드를 반복하거나 메소드의 존재에 따라 클래스 또는 인스턴스 객체를 다르게 처리하고 싶습니다. 클래스 메소드의 목록을 어떻게 얻을 수 있을까요?
또한 다음을 참조하십시오:
- Python 2.5 모듈의 메소드를 나열하는 방법
- Python / IronPython 객체 메소드를 반복하는 방법
- 객체가 가지고 있는 메소드 찾기
- Python 객체 내부를 확인하는 방법
- Python 2.x에서 객체에 대한 내용 검사하는 방법
- 객체의 메소드와 속성의 완전한 목록을 가져오는 방법
- 파이썬에서 클래스 인스턴스에서 사용 가능한 함수 확인하기
답변
예제 ( optparse.OptionParser
클래스의 메서드 나열):
>>> from optparse import OptionParser
>>> import inspect
#python2
>>> inspect.getmembers(OptionParser, predicate=inspect.ismethod)
[([('__init__', <unbound method OptionParser.__init__>),
...
('add_option', <unbound method OptionParser.add_option>),
('add_option_group', <unbound method OptionParser.add_option_group>),
('add_options', <unbound method OptionParser.add_options>),
('check_values', <unbound method OptionParser.check_values>),
('destroy', <unbound method OptionParser.destroy>),
('disable_interspersed_args',
<unbound method OptionParser.disable_interspersed_args>),
('enable_interspersed_args',
<unbound method OptionParser.enable_interspersed_args>),
('error', <unbound method OptionParser.error>),
('exit', <unbound method OptionParser.exit>),
('expand_prog_name', <unbound method OptionParser.expand_prog_name>),
...
]
# python3
>>> inspect.getmembers(OptionParser, predicate=inspect.isfunction)
...
getmembers
가 2-튜플의 리스트를 반환하는 것에 주목하세요. 첫 번째 항목은 멤버의 이름이고, 두 번째 항목은 값입니다.
getmembers
에 인스턴스를 전달할 수도 있습니다:
>>> parser = OptionParser()
>>> inspect.getmembers(parser, predicate=inspect.ismethod)
...
반응형
댓글