python枚举类的意义_Python中元类与枚举类的介绍(代码示例)

本篇文章给大家带来的内容是关于Python中元类与枚举类的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、元类

1、type()函数可以返回对象的类型,也可以创建出新的类型。它可以改变类创建时的行为,实现动态创建类。# 第一个参数:类名

# 第二个参数:父类元祖

# 第三个参数:属性、方法

A = type("A",(object,),{"name":"zhou"})

a = A()

print(type(A)) #

print(type(a)) #

print(a.name) # zhou

2、可以通过metaclass指定类的元类class MyType(type):

pass

class A(metaclass=MyType):

pass

print(type(A)) #

另一种指定函数元类(转载):def upper_attr(future_class_name, future_class_parents, future_class_attr):

attrs = ((name, value) for name, value in future_class_attr.items() if not name.startswith('__'))

uppercase_attr = dict((name.upper(), value) for name, value in attrs)

return type(future_class_name, future_class_parents, uppercase_attr)

class Foo(metaclass = upper_attr): # 指定元类

bar = 'bip'

print(hasattr(Foo, 'bar'))

#输出: False

print(hasattr(Foo, 'BAR'))

# 输出:True

二、枚举类

在开发中经常设置多组常量,Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较。from enum import Enum

pay_methods = Enum("PayMethods",("CASH","WEIXIN","ALIPAY","UNIONPAY",))

for name, member in pay_methods.__members__.items():

print(name, ',', member, ',', member.value)

# CASH , PayMethods.CASH , 1

# WEIXIN , PayMethods.WEIXIN , 2

# ALIPAY , PayMethods.ALIPAY , 3

# UNIONPAY , PayMethods.UNIONPAY , 4

# value属性则是自动赋给成员的int常量,默认从1开始计数。

也可以通过继承Enum类来自定义:from enum import Enum, unique

@unique # 帮助我们检查是否重复

class PayMethods(Enum):

CASH = 0 # 设置CASH.value = 0

WEIXIN = 1

ALIPAY = 2

UNIONPAY = 3

print(PayMethods['CASH']) # PayMethods.CASH

print(PayMethods(1)) # PayMethods.WEIXIN

print(PayMethods.ALIPAY.value) # 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值