개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.04 21:59

get_called_class() 함수에 대한 이해

목록
  • 앱스토어장인 11일 전 2025.07.04 21:59
  • 20
    1
저는 Python의 상속과 메타클래스에 대해 공부 중인데, get_called_class() 함수를 사용하여 클래스를 호출할 때 원하는 결과를 얻지 못하고 있습니다.

get_called_class() 함수는 메타클래스를 사용하여 클래스를 정의할 때 사용할 수 있습니다. 하지만, 이 함수를 사용하여 클래스를 호출할 때, 원하는 결과를 얻지 못하고 있습니다. get_called_class() 함수는 클래스를 호출할 때 호출된 클래스의 이름을 반환하는 데 사용됩니다.

예를 들어, 다음 코드를 살펴보십시오:

python

class Meta(type):

    def __new__(cls, name, bases, dct):

        return super().__new__(cls, name, bases, dct)



class A(metaclass=Meta):

    pass



class B(A):

    pass



get_called_class() 함수를 사용하여 클래스 B를 호출할 때, 원하는 결과를 얻지 못하고 있습니다. get_called_class() 함수는 클래스 B의 이름을 반환하는 데 사용됩니다.

get_called_class() 함수를 사용하여 클래스 B를 호출할 때, 원하는 결과를 얻으려면 어떻게 해야 합니까?

또한, get_called_class() 함수를 사용하여 클래스를 호출할 때, 여러 클래스를 호출할 수 있는 방법은 무엇입니까?

질문에 포함된 예제는 Python 3.6 이상에서 동작하는 예제입니다.

    댓글목록

    profile_image
    나우호스팅  11일 전



    get_called_class() 함수는 메타클래스를 사용하여 클래스를 정의할 때 사용할 수 있습니다. 하지만, 이 함수를 사용하여 클래스를 호출할 때, 원하는 결과를 얻으려면 __new__ 메소드에서 get_called_class() 함수를 사용해야 합니다.

    #hostingforum.kr
    python
    
    class Meta(type):
    
        def __new__(cls, name, bases, dct):
    
            return super().__new__(cls, name, bases, dct)
    
    
    
    class A(metaclass=Meta):
    
        pass
    
    
    
    class B(A):
    
        def __init__(self):
    
            print(get_called_class().__name__)
    
    
    
    b = B()
    
    


    이 코드를 실행하면 B가 출력됩니다.

    get_called_class() 함수를 사용하여 여러 클래스를 호출할 수 있는 방법은 여러 개의 get_called_class() 함수를 사용하는 것입니다.

    #hostingforum.kr
    python
    
    class Meta(type):
    
        def __new__(cls, name, bases, dct):
    
            return super().__new__(cls, name, bases, dct)
    
    
    
    class A(metaclass=Meta):
    
        pass
    
    
    
    class B(A):
    
        def __init__(self):
    
            print(get_called_class().__name__)
    
    
    
    class C(A):
    
        def __init__(self):
    
            print(get_called_class().__name__)
    
    
    
    b = B()
    
    c = C()
    
    


    이 코드를 실행하면 B와 C가 출력됩니다.

    또한, get_called_class() 함수를 사용하여 여러 클래스를 호출할 수 있는 방법은 __init_subclass__ 메소드를 사용하는 것입니다.

    #hostingforum.kr
    python
    
    class Meta(type):
    
        def __init_subclass__(cls, **kwargs):
    
            print(getattr(cls, '__name__', 'Unknown'))
    
    
    
    class A(metaclass=Meta):
    
        pass
    
    
    
    class B(A):
    
        pass
    
    
    
    class C(A):
    
        pass
    
    
    
    B()
    
    C()
    
    


    이 코드를 실행하면 B와 C가 출력됩니다.

    2025-07-04 22:00

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 36,389건 / 91 페이지

검색

게시물 검색