40.Python进阶_元类

所有类的类型都是type,所有类都是通过type创建出来的,我们看一下下面的代码:

#Python2中的方式成为旧式类 ,instance
class MyClass:
    pass

#Python3中两种定义方式没有任何区别都是object
#python3中的这个方式成为新式类,type
class MyClass1(object):
    pass

c= MyClass()
c1= MyClass1()

print(type(c))
print(type(c1))


print(type(MyClass))
print(type(MyClass))

运行结果:

<class '__main__.MyClass'>
<class '__main__.MyClass1'>
<class 'type'>
<class 'type'>

元类:

Python中任何新式类和Python3中的任何类都是type元类的一个实例,函数type实际上是一个元类,type就是Python在背后用来创建所有类的元类;

注意区分元类和继承的基类:
  • type:是元类,所有类都是通过type创建出来的
  • object:顶层基类,所有类的继承顶层父类都是object
使用type动态定义类:

内置type()函数在传递一个参数时返回一个对象类型,对于新式类,通常与对象的class属性相同;
type(name,bases,dict)

  • name:指定类名称
  • bases:指定继承类的父类元组,tuple类型
  • dict:定义类的属性和方法,dict类型,添加的属性和类属性
def func1(self):
    print('这个是self.name:',self.name)

dict1 = {'name':'小静','age':18,'func':func1}
My = type('MyClass',(object,),dict1)

m1 = My()  使用返回的变量名进行创建对象
print(m1.name)
print(m1.age)
m1.func()  #注意使用type中方法属性的key值进行调用

运行结果:

小静
18
这个是self.name: 小静
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值