简述元类

在试图理解元类之前,需要先掌握python中的类

在大多数语言中,类只是描述如何生成对象的代码片段。在Python中也是如此:

clss ObjectCreator(object):
	pass

my_object = ObjectCreator()
print(my_object)
<__main__.ObjectCreator object at 0x8974f2c>

但是python中的类比这更多,python中的类也是对象,
是的,一个对象。(毕竟,python中万物皆对象)

一旦使用class关键字,python就会执行它并创建一个OBJECT,在内存中创建一个名为类名的对象,这个对象(类)本身能够创建对象(实例),这就是为什么他是一个类(毕竟他可以创建对象)。

但是它仍然是一个对象,因此:

你可以将其分配给变量
你可以复制它
你可以给它添加属性
你可以将其作为函数参数传递

动态创建类
由于类是对象,因此我们可以像任何对象一样动态创建它们。type经常被用来了解对象类型

>>>print(type('and'))
<type 'str' >

但是,type有一个完全不同的能力,它可以动态创建类。type将类的描述作为参数,并返回一个类。这就是python中的元类。元类定义了类的行为方式,就像类定义了类的实例的行为一样,类是元类的实例。

type(name of the class,
     tuple of the parent class (for inheritance, can be empty),
     dictionary containing attributes names and values)

type接收字典来定义类的属性

>>>Foo = type('Foo', (), {'bar':True})
即:
>>>class Foo(object):
...    bar = True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值