열거형 소스 코드

위의 예에서 열거형 클래스의 모든 멤버는 __members__를 통해 탐색될 수 있음을 알 수 있습니다. 왜?

먼저 Enum의 소스 코드가 enum.py 모듈에 어떻게 구현되어 있는지 대략적으로 살펴보겠습니다. 먼저 Enum 클래스의 일부를 살펴보겠습니다.

class Enum(metaclass=EnumMeta):
    """Generic enumeration.
    Derive from this class to define new enumerations.
    """

Enum이 EnumMeta 메타클래스를 상속하는 것을 볼 수 있습니다. ; 다시 살펴보기 EnumMeta

class EnumMeta(type):
    """Metaclass for Enum"""
    @property
    def __members__(cls):
        """Returns a mapping of member name->value.
        This mapping lists all enum members, including aliases. Note that this
        is a read-only view of the internal mapping.
        """
        return MappingProxyType(cls._member_map_)

관련 스니펫을 살펴보세요. 먼저 __members__ 메서드는 Dict 또는 Map이 포함된 MappingProxyType을 반환하고 @property를 통해 __members__(cls) 메서드의 액세스 메서드가 다음 형식으로 변경됩니다. 직접 전달할 수 있는 변수의 _ _members__ 님이 방문하셨습니다

지속적인 학습
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!