cari
  • Log masuk
  • Daftar
Penetapan semula kata laluan berjaya

Ikuti proiects vou berminat dengan andi aet terbaru mengenai mereka

Kod sumber Enum

Daripada contoh di atas, anda boleh tahu bahawa semua ahli kelas enumerasi boleh dilalui melalui __ahli__. Jadi kenapa?

Kita boleh terlebih dahulu melihat secara kasar bagaimana kod sumber Enum dilaksanakan dalam modul enum.py Mari kita lihat serpihan kelas Enum

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

Anda boleh melihat bahawa Enum mewarisi. metaclass EnumMeta; lihat sekali lagi Lihat pada coretan 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_)

Pertama sekali, kaedah __members__ mengembalikan MappingProxyType yang mengandungi Dict atau Map, dan melalui @property, kaedah akses kaedah __members__(cls) ditukar kepada bentuk pembolehubah, yang boleh terus dilalui _ _ahli__ berada di sini untuk lawatan

fail baharu
Tetapkan Semula Kod
Operasi automatik
serahkan
Pratonton Clear
  • Cadangan kursus
  • Muat turun perisian kursus