Python 3의 내부 클래스에서 외부 클래스 개체에 액세스

미하일 게라시 모프

비슷한 질문을 읽었지만 답을 찾을 수 없었습니다.

이 질문은 하지 접근에 대한 예를 외부 클래스 또는 그것의 방법,의를하지만, 외부 액세스에 대한 클래스 객체 정상 작업해야합니다. __qualname__외부 클래스의 이름에 대한 정보를 포함하는 즉시 외부 클래스 개체에 동적으로 액세스 할 수없는 이유가 없습니다.

이 예제는 다음을 수행합니다.

class Outer:
    class Inner:
        @classmethod
        def parent_class(cls):
            outer_name = cls.__qualname__.split('.')[-2]
            outer_cls = globals()[outer_name]
            print(outer_cls)


Outer.Inner.parent_class()  # <class '__main__.Outer'>

그러나 parent_class다른 모듈에 배치 된 함수 에서는 작동하지 않습니다 .

# some.py
class Some:
    @classmethod
    def parent_class(cls):
        outer_name = cls.__qualname__.split('.')[-2]
        outer_cls = globals()[outer_name]
        print(outer_cls)

# main.py
from some import Some


class Outer:
    class Inner(Some):
        pass

Outer.Inner.parent_class()  # KeyError: 'Outer'

모든 중첩 클래스에 클래스 객체를 추가하는 Outer의 클래스 데코레이터로 해결할 수 있다고 생각하지만, 외부 클래스 객체를 얻는 "깨끗한"방법이 있습니까?

미하일 게라시 모프

이 솔루션은 모든 경우에 작동하는 것처럼 보입니다.

import sys


class Outer:
    class Inner:
        @classmethod
        def parent_class(cls):
            outer_name = cls.__qualname__.split('.')[-2]
            outer_module = sys.modules[cls.__module__]
            outer_cls = vars(outer_module)[outer_name]
            print(outer_cls)


Outer.Inner.parent_class()  # <class '__main__.Outer'>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

내부 클래스에서 외부 클래스의 필드에 액세스

분류에서Dev

내부 중첩 클래스의 외부 클래스에 액세스

분류에서Dev

내부 클래스의 객체에서 외부 클래스 함수에 액세스

분류에서Dev

지역 내부 클래스에서 외부 개체에 대한 모의 액세스

분류에서Dev

Objective C의 클래스 외부에서 속성에 액세스

분류에서Dev

클래스 외부에서 개체에 액세스

분류에서Dev

클래스 외부 클래스의 비공개 멤버에 액세스

분류에서Dev

자식 클래스 Python 내부의 부모 클래스 개체

분류에서Dev

Java Inner 클래스-외부 객체의 변수에 액세스

분류에서Dev

다른 클래스에서 내부 클래스에 액세스

분류에서Dev

외부 클래스의 내부 클래스 멤버 필드에 대한 Java Android 액세스

분류에서Dev

Scala의 내부 클래스에서 외부 개체를 참조하는 방법

분류에서Dev

외부 클래스 중첩 열거에 대한 내부 클래스 액세스

분류에서Dev

Android의 내부 클래스 내 변수에 액세스

분류에서Dev

파이썬 클래스 외부의 파일에 액세스

분류에서Dev

클래스 외부의 공용 정적 변수에 액세스

분류에서Dev

클래스 및 함수 외부의 변수에 액세스

분류에서Dev

drools의 부모 클래스에서 자식 클래스 속성에 액세스

분류에서Dev

클래스 외부에서 PHP 클래스 개인 속성 액세스

분류에서Dev

클래스 및 네임 스페이스 내부의 C # 목록, 다른 클래스에서 액세스

분류에서Dev

중첩 된 Python 클래스 및 부모의 메서드에 대한 액세스

분류에서Dev

jar 외부에서 기본 패키지의 클래스에 액세스

분류에서Dev

outerClass.this를 사용하여 내부 클래스 내에서 외부 클래스에 액세스

분류에서Dev

클래스 내부에서 클래스 외부에서 선언 된 변수에 액세스

분류에서Dev

SurfaceListBox 내부의 클래스에서 공용 메서드에 액세스

분류에서Dev

새 클래스를 정의 할 때 __init__ 내부 및 외부에서 Python에서 예외 발생

분류에서Dev

내부 클래스에서 정의한 개체 복제

분류에서Dev

PHP 클래스 내부에 새 PDO 개체 정의 (외부 함수)

분류에서Dev

Java의 파생 클래스에서 수퍼 클래스에 중첩 된 개인 내부 클래스에 액세스하는 방법이 있습니까?

Related 관련 기사

  1. 1

    내부 클래스에서 외부 클래스의 필드에 액세스

  2. 2

    내부 중첩 클래스의 외부 클래스에 액세스

  3. 3

    내부 클래스의 객체에서 외부 클래스 함수에 액세스

  4. 4

    지역 내부 클래스에서 외부 개체에 대한 모의 액세스

  5. 5

    Objective C의 클래스 외부에서 속성에 액세스

  6. 6

    클래스 외부에서 개체에 액세스

  7. 7

    클래스 외부 클래스의 비공개 멤버에 액세스

  8. 8

    자식 클래스 Python 내부의 부모 클래스 개체

  9. 9

    Java Inner 클래스-외부 객체의 변수에 액세스

  10. 10

    다른 클래스에서 내부 클래스에 액세스

  11. 11

    외부 클래스의 내부 클래스 멤버 필드에 대한 Java Android 액세스

  12. 12

    Scala의 내부 클래스에서 외부 개체를 참조하는 방법

  13. 13

    외부 클래스 중첩 열거에 대한 내부 클래스 액세스

  14. 14

    Android의 내부 클래스 내 변수에 액세스

  15. 15

    파이썬 클래스 외부의 파일에 액세스

  16. 16

    클래스 외부의 공용 정적 변수에 액세스

  17. 17

    클래스 및 함수 외부의 변수에 액세스

  18. 18

    drools의 부모 클래스에서 자식 클래스 속성에 액세스

  19. 19

    클래스 외부에서 PHP 클래스 개인 속성 액세스

  20. 20

    클래스 및 네임 스페이스 내부의 C # 목록, 다른 클래스에서 액세스

  21. 21

    중첩 된 Python 클래스 및 부모의 메서드에 대한 액세스

  22. 22

    jar 외부에서 기본 패키지의 클래스에 액세스

  23. 23

    outerClass.this를 사용하여 내부 클래스 내에서 외부 클래스에 액세스

  24. 24

    클래스 내부에서 클래스 외부에서 선언 된 변수에 액세스

  25. 25

    SurfaceListBox 내부의 클래스에서 공용 메서드에 액세스

  26. 26

    새 클래스를 정의 할 때 __init__ 내부 및 외부에서 Python에서 예외 발생

  27. 27

    내부 클래스에서 정의한 개체 복제

  28. 28

    PHP 클래스 내부에 새 PDO 개체 정의 (외부 함수)

  29. 29

    Java의 파생 클래스에서 수퍼 클래스에 중첩 된 개인 내부 클래스에 액세스하는 방법이 있습니까?

뜨겁다태그

보관