지정된 클래스의 계층 구조에 있는 모든 기본 클래스를 나열하시겠습니까?
수업이 주어졌습니다.Foo
(새 스타일 클래스인지 여부에 관계없이) 상속 계층의 모든 기본 클래스를 어떻게 생성합니까?
inspect.getmro(cls)
새로운 스타일 클래스와 오래된 스타일 클래스 모두에 대해 작동하고 다음과 동일하게 반환합니다.NewClass.mro()
메서드 확인에 사용된 순서대로 클래스와 모든 상위 클래스의 목록입니다.
>>> class A(object):
>>> pass
>>>
>>> class B(A):
>>> pass
>>>
>>> import inspect
>>> inspect.getmro(B)
(<class '__main__.B'>, <class '__main__.A'>, <type 'object'>)
파이썬에서 사용할 수 있는 속성 보기class
여기에는 기본 클래스의 튜플이 포함됩니다.
>>> def classlookup(cls):
... c = list(cls.__bases__)
... for base in c:
... c.extend(classlookup(base))
... return c
...
>>> class A: pass
...
>>> class B(A): pass
...
>>> class C(object, B): pass
...
>>> classlookup(C)
[<type 'object'>, <class __main__.B at 0x00AB7300>, <class __main__.A at 0x00A6D630>]
inspect.getclasstree()
클래스와 해당 베이스의 중첩된 목록을 만듭니다.용도:
inspect.getclasstree(inspect.getmro(IOError)) # Insert your Class instead of IOError.
파이썬 문서에 따르면, 우리는 또한 간단히 사용할 수 있습니다.class.__mro__
속성 또는class.mro()
방법:
>>> class A:
... pass
...
>>> class B(A):
... pass
...
>>> B.__mro__
(<class '__main__.B'>, <class '__main__.A'>, <class 'object'>)
>>> A.__mro__
(<class '__main__.A'>, <class 'object'>)
>>> object.__mro__
(<class 'object'>,)
>>>
>>> B.mro()
[<class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
>>> A.mro()
[<class '__main__.A'>, <class 'object'>]
>>> object.mro()
[<class 'object'>]
>>> A in B.mro()
True
사용할 수 있습니다.__bases__
클래스 개체의 튜플:
class A(object, B, C):
def __init__(self):
pass
print A.__bases__
반환된 튜플__bases__
모든 기본 클래스가 있습니다.
python 3.7에서는 inspect를 가져올 필요가 없습니다.mro를 입력하면 결과가 나타납니다.
>>> class A:
... pass
...
>>> class B(A):
... pass
...
>>> type.mro(B)
[<class '__main__.B'>, <class '__main__.A'>, <class 'object'>]
>>>
python 3.x에서는 모든 클래스가 기본 개체 클래스에서 상속됩니다.
Jochen의 답변은 매우 유용하고 정확하지만 검사 모듈의 .getmro() 메서드를 사용하여 클래스 계층을 얻을 수 있으므로 Python의 상속 계층이 다음과 같다는 점도 강조해야 합니다.
ex:
class MyClass(YourClass):
상속 클래스
- 아동반
- 파생 클래스
- 하위 클래스
ex:
class YourClass(Object):
상속된 클래스
- 상위 클래스
- 기본 클래스
- 슈퍼클래스
한 클래스는 다른 클래스로부터 상속될 수 있습니다. 클래스의 속성은 상속됩니다. 특히 메서드는 상속됩니다. 이는 상속된 (하위) 클래스의 인스턴스가 상속된 (상위) 클래스의 속성에 액세스할 수 있음을 의미합니다.
인스턴스 -> 클래스 -> 상속된 클래스
사용.
import inspect
inspect.getmro(MyClass)
Python 내의 계층 구조를 보여줍니다.
언급URL : https://stackoverflow.com/questions/1401661/list-all-base-classes-in-a-hierarchy-of-given-class
'programing' 카테고리의 다른 글
매크로 - 폴더의 모든 파일 열기 (0) | 2023.06.18 |
---|---|
Ruby 어레이: %w 대 %W (0) | 2023.06.18 |
IF 문의 값 목록과 비교하는 방법은 무엇입니까? (0) | 2023.06.18 |
파이썬에서 openpyxl을 사용하여 Excel 스프레드시트에 행 삽입 (0) | 2023.06.18 |
여러 .csv 파일을 한 번에 가져오는 방법은 무엇입니까? (0) | 2023.06.18 |