Python进阶-元类

元类


在Python中一切皆对象,数字、字符串、函数等都是对象,那么利用class关键字创建的类也是一个对象叫做类对象,那么他们都是什么创建的呢?

 他们都是由元类创建的,而元类是由自身创建

Python是一种动态类型语言,可以动态的创建变量,那么同样可以动态的创建类,我们可以按照我们的需求通过type去创建所需要的类

总所周知,type函数可以判断对象类型,但是type还有另外一个用法,就是可以创建类

type会根据传入的参数不同,执行不同的事情
注意:尽量不要让一个函数拥有2种完全不同的功能,Python之所以这样设计是为了保持向后兼容性

扩充:
 向后兼容性:
 简单来说,就是当前的版本可以使用之前版本的东西,不会造成不兼容而无法使用

type的两种语法:
 1.type(对象)  # 可以判断对象的数据类型
 2.type(类名(字符串),(继承的父类的类名(引用)),{ 名称(字符串):值(引用) })

例:

class A:
	pass


B = type("B", (), {})
# 以上两种创建类的方式不同,但是创建的类中的属性,方法等都相同

创建带有类属性的类

class A:
	a = 1


B = type("B", (), {"a": 1})

创建带有方法的类

# 普通创建类
class A:
	a = 1
	
	def a1(self):
		pass
	
	@classmethod
	def a2(cls):
		pass
	
	@staticmethod
	def a3():
		pass
# 元类创建类
def a1(self):
	pass


def a2(cls):
	pass


def a3():
	pass


B = type("B", (), {"a": 1, "a1": a1, "a2": a2, "a3": a3})

可以通过 对象.__class__ 来查看创建该对象的类

元类一般情况下不会使用,但是在MySQL数据库中会使用元类来实现ORM映射

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值