[PYTHON] 파이썬 예외 / 오류 계층 구조 인쇄
PYTHON파이썬 예외 / 오류 계층 구조 인쇄
예외 / 오류 클래스 계층 구조를 인쇄하려면 파이썬의 모든 명령 행 옵션이 있습니까?
출력은 http://docs.python.org/2/library/exceptions.html#exception-hierarchy와 유사해야합니다.
해결법
-
==============================
1.inspect 모듈이 특히 getclasstree () 함수에 도움이 될 수 있습니다.
inspect 모듈이 특히 getclasstree () 함수에 도움이 될 수 있습니다.
inspect.getclasstree(inspect.getmro(Exception))
또는 다음과 같이 상속 트리를 통해 재귀 적으로 __subclasses __ ()를 수행 할 수 있습니다.
def classtree(cls, indent=0): print '.' * indent, cls.__name__ for subcls in cls.__subclasses__(): classtree(subcls, indent + 3) classtree(BaseException)
인쇄물:
BaseException ... Exception ...... StandardError ......... TypeError ......... ImportError ............ ZipImportError ......... EnvironmentError ............ IOError ............... ItimerError ............ OSError ......... EOFError ......... RuntimeError ............ NotImplementedError ......... NameError ............ UnboundLocalError ......... AttributeError ......... SyntaxError ............ IndentationError ............... TabError ......... LookupError ............ IndexError ............ KeyError ............ CodecRegistryError ......... ValueError ............ UnicodeError ............... UnicodeEncodeError ............... UnicodeDecodeError ............... UnicodeTranslateError ......... AssertionError ......... ArithmeticError ............ FloatingPointError ............ OverflowError ............ ZeroDivisionError ......... SystemError ............ CodecRegistryError ......... ReferenceError ......... MemoryError ......... BufferError ...... StopIteration ...... Warning ......... UserWarning ......... DeprecationWarning ......... PendingDeprecationWarning ......... SyntaxWarning ......... RuntimeWarning ......... FutureWarning ......... ImportWarning ......... UnicodeWarning ......... BytesWarning ...... _OptionError ... GeneratorExit ... SystemExit ... KeyboardInterrupt
-
==============================
2.표준 라이브러리 대신 코드를 재사용하십시오.
표준 라이브러리 대신 코드를 재사용하십시오.
import inspect import pydoc def print_class_hierarchy(classes=()): td = pydoc.TextDoc() tree_list_of_lists = inspect.getclasstree(classes) print(td.formattree(tree_list_of_lists, 'NameSpaceName'))
이것을 사용하려면 우리가 함수를 전달하는 것이 의미있는 클래스의 계층 구조가 목록 형태로 필요합니다. 이 함수를 사용하여 클래스 .__ 하위 클래스 __ () 메소드 결과를 재귀 적으로 검색하여이를 빌드 할 수 있습니다 (여기에서 표준 버전을 유지합니다).
def get_subclasses(cls): """returns all subclasses of argument, cls""" if issubclass(cls, type): # not a bound method subclasses = cls.__subclasses__(cls) else: subclasses = cls.__subclasses__() for subclass in subclasses: subclasses.extend(get_subclasses(subclass)) return subclasses
함께 넣어 :
list_of_classes = get_subclasses(int) print_class_hierarchy(list_of_classes)
어떤 것을 인쇄합니까 (파이썬 3에서) :
>>> print_class_hierarchy(classes) builtins.int(builtins.object) builtins.bool enum.IntEnum(builtins.int, enum.Enum) inspect._ParameterKind signal.Handlers signal.Signals enum.IntFlag(builtins.int, enum.Flag) re.RegexFlag sre_constants._NamedIntConstant subprocess.Handle enum.Enum(builtins.object) enum.IntEnum(builtins.int, enum.Enum) inspect._ParameterKind signal.Handlers signal.Signals enum.Flag(enum.Enum) enum.IntFlag(builtins.int, enum.Flag) re.RegexFlag
이것은 우리에게 모든 하위 클래스의 트리와 관련 다중 상속 클래스를 제공하고 그들이 사는 모듈을 알려줍니다.
from https://stackoverflow.com/questions/18296653/print-the-python-exception-error-hierarchy by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 일반 인수 대 키워드 인수 (0) | 2018.11.17 |
---|---|
[PYTHON] urllib2 전체 HTTP 응답을 검색하지 못함 (0) | 2018.11.17 |
[PYTHON] numpy에서 인접하지 않은 범위를 여러 개 색인으로 만듭니다. (0) | 2018.11.17 |
[PYTHON] 파이썬 : 한 사전이 다른 큰 사전의 하위 집합인지 확인하십시오 (0) | 2018.11.16 |
[PYTHON] 왜 클래스 __dict__는 mappingproxy입니까? (0) | 2018.11.16 |