枚举型和元类
Posted 哈哈哈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举型和元类相关的知识,希望对你有一定的参考价值。
枚举型
from enum import Enum Month=Enum(‘Month‘,(‘Jan‘,‘Feb‘,‘Mar‘,‘Apr‘,‘May‘,‘jun‘,‘Jul‘)) for name,member in Month.__members__.items(): print(name,‘-‘,member,‘,‘,member.value)
Jan - Month.Jan , 1
Feb - Month.Feb , 2
Mar - Month.Mar , 3
Apr - Month.Apr , 4
May - Month.May , 5
jun - Month.jun , 6
Jul - Month.Jul , 7
可以从枚举类派生自定义类:
from enum import Enum, unique # unique 检测有么有重复值 @unique class Weekday(Enum): sun=0 mon=1 tue=2 wed=3 thu=4 fri=5 sat=6
元类:
python是动态语言,函数和类的定义不是编译时定义的,而是运行时动态创建的,动态创建class 使用type()函数。
type() 既可以返回一个对象的类型,又可以创建新的类型, 例如:
#定义方法 def getname(self, name=‘haha‘): print(‘%s.‘% name) # ‘Name’ class 名称, 第二个参数继承类,第三个参数方法名称和函数的绑定 Name=type(‘Name‘,(object,),dict(getName=getname))
除了type 动态创建类之外, 要控制类的创建行为,还可以使用metaclass:
先创建metaclass, 就可以创建类,最后创建实例
metaclass 允许创建类和修改类,类可以看出metaclass创建的实例
以上是关于枚举型和元类的主要内容,如果未能解决你的问题,请参考以下文章