欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python中的元类与应用

程序员文章站 2022-03-04 14:30:03
...
# 定义一个类
class Test(object):
	num = 100
	
# 创建对象
test = Test()
print(test.num)

在python中,类可以创建对象,请问类又是由谁创建,答案是元类
元类:用来创建类的特殊类

type出来可以用来查看对象的类型之外,还可以用来创建元类

元类的创建

# 定义一个实例方法
def test1(self):
	print("这是一个实例方法")

# 定义一个类方法
@classmethod
def test2(cls):
	print("这是一个类方法")

# 定义一个静态方法
@staticmethod
def test3():
	print("这是一个静态方法")

# 用type创建元类(继承object)
Test = type("Test",(object,),{"test1":test1,"test2":test2,"test3":test3})

# 创建对象
test = Test()

元类的应用
元类与装饰器功能类似,即在不改变原先代码的前提下,在外部增加类的功能

# 将类中属性小写替换成大写
def test(class_name, class_parent, class_attr):
	# 定义一个空字典
	new_attr = dict()
	# 遍历属性字典,把不是__开头的属性改成大写
	for name, value in class_attr.items():
		if not name.startswith("__"):
			new_attr[name.upper()] = value
	# 返回创建好的类
	return type(class_name, class_parent, new_attr)

# metaclass的值为一个函数表示使用一个函数来创建一个类
class Test(object, metaclass = test):
	a = "hello"

# 创建对象
test = Test()
print(test.A)  # 此时属性a已替换为大写,输出结果为"hello"

相关标签: python