枚举型和元类

枚举型

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创建的实例

posted @ 2017-05-25 19:21  hahahaf  阅读(171)  评论(0编辑  收藏  举报