Python 클래스의 부모를 구하는 방법은?
Python 클래스의 부모 클래스를 가져오려면 어떻게 해야 합니까?
다음 속성을 사용합니다.
cls.__bases__
문서에서:
클래스 개체의 기본 클래스 튜플입니다.
예:
>>> str.__bases__
(<type 'basestring'>,)
또 다른 예는 다음과 같습니다.
>>> class A(object):
... pass
...
>>> class B(object):
... pass
...
>>> class C(A, B):
... pass
...
>>> C.__bases__
(<class '__main__.A'>, <class '__main__.B'>)
직접뿐만 아니라 모든 조상을 원하는 경우 다음을 사용합니다.
import inspect
print inspect.getmro(cls)
유용하게 사용할 수 있는 것은 메서드를 해결할 때 상위 항목이 체크되는 순서(또는 다른 속성, 즉 메서드와 기타 속성이 Python의 동일한 네임스페이스에 존재하는 순서)의 모든 상위 클래스를 제공하는 것입니다.
모든 부모들을 데려오는 가장 빠른 방법은, 그리고 순서대로, 그냥,__mro__붙박이.
예를 들어.repr(YOUR_CLASS.__mro__).
다음 항목:
import getpass
getpass.GetPassWarning.__mro__
...순서는 다음과 같습니다.
(<class 'getpass.GetPassWarning'>, <type 'exceptions.UserWarning'>, <type 'exceptions.Warning'>, <type 'exceptions.Exception'>, <type 'exceptions.BaseException'>, <type 'object'>)
바로 그겁니다."최선" 답변이 더 많은 표를 얻을 수 있지만, 이것은 일부 난해한 답변보다 훨씬 더 간단하다.for루프, 조사__bases__클래스가 두 개 이상의 부모 클래스를 확장하는 것은 말할 것도 없습니다.Import 및 사용inspect불필요하게 스코프를 흐리게 할 뿐입니다.
새로운 스타일의 클래스에는mro메서드 해결 순서로 부모 클래스 목록을 반환하는 호출 가능한 메서드.
부모를 얻고 싶다면 베이스를 사용하세요__mro__(@syslog101에서 지적된 바와 같이) 메서드 해결 순서를 취득합니다(init가 실행된 순서를 알 수 있습니다).
기본(및 먼저 기존 객체의 클래스를 가져옵니다):
>>> some_object = "some_text"
>>> some_object.__class__.__bases__
(object,)
최신 Python 버전의 mro의 경우:
>>> some_object = "some_text"
>>> some_object.__class__.__mro__
(str, object)
분명히, 클래스 정의가 이미 되어 있는 경우는, 전화하면 됩니다.__mro__그 점에 대해 직접 확인:
>>> class A(): pass
>>> A.__mro__
(__main__.A, object)
모든 호출을 받으려면 모든 수준에서 를 사용하십시오.
이 함수는 객체의 모든 클래스를 인쇄하고 각 단계에서 다음 객체는 가장 왼쪽에 있는 상위 객체가 됩니다.
def print_root_left(class_):
while True:
print(class_)
# Check there if are no bases then we have reached the root class
if not class_.__bases__:
break
class_=class_.__bases__[0] # use the left most parent
example = "hello"
print_root_left(example.__class__)
이미 한 번 대답했지만, "pip3 install pytis"를 사용하여 Python으로 작성된 "getip" 프로그램을 사용하거나 볼 수도 있습니다.
코드는, https://github.com/PyTis/PyTis/blob/development/src/pytis/getip.py 에서 확인할 수 있습니다.
링크된 저장소의 작성자입니다.
변수가 있고 해당 클래스의 클래스와 부모 클래스를 가져오려면 type() 메서드를 사용하여 변수에 대한 클래스를 제공합니다.
val="happy coding"
print(type(val).__mro__)
출력:
(<class 'str'>, <class 'object'>)
언급URL : https://stackoverflow.com/questions/2611892/how-to-get-the-parents-of-a-python-class
'source' 카테고리의 다른 글
| 상속을 통한 열거형 확장 (0) | 2022.09.19 |
|---|---|
| Laravel 유효성 검사 속성 "nice names" (0) | 2022.09.19 |
| POST 요청으로 JSON 데이터 Java HttpUrlConnection 전송 (0) | 2022.09.19 |
| "=="와 "is"는 차이가 있습니까? (0) | 2022.09.18 |
| 파일에서 텍스트를 검색하고 바꾸려면 어떻게 해야 합니까? (0) | 2022.09.18 |