枚举型和元类

枚举型

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

转载于:https://www.cnblogs.com/fanhaha/p/6905530.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值