码迷,mamicode.com
首页 > 其他好文 > 详细

枚举型和元类

时间:2017-05-25 20:45:39      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:apr   int   pytho   动态语言   meta   检测   自定义   members   style   

枚举型

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

枚举型和元类

标签:apr   int   pytho   动态语言   meta   检测   自定义   members   style   

原文地址:http://www.cnblogs.com/fanhaha/p/6905530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!