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

Meneruskan pembelajaran
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!