元类

一.定义
我们知道类进行实例化之后会产生一个实例,也就是说实例是由类产生的。但是由于在python中一切皆对象,那么类又是由什么产生的呢?
在python中我们定义:
元类是类的类,它是产生类的模板;
元类(metaclass)的实例是类,type是python的一个内建元类,用来直接控制生成的类,python中任何一个class定义的类都是由type类实例化产生的对象。不要问我,type类是由哪个类产生的.......
二.定义类的两种方式
方式1:使用class关键字定义
元类
方式2:使用type元类来定义
元类
该部分代码块如下:
#类的定义方式一,使用class关键字

class School:
    def __init__(self,name,addr):
        self.name = name
        self.addr = addr

    def showinfo(self):
        print("%s学校在%s"%(self.name,self.addr))
# print(School.__name__)
# print(School.__dict__)

#类的定义方式二,使用type元类定义
def __init__(self,name,addr):
    self.name = name
    self.addr = addr
def showinfo(self):
    print("%s学校在%s"%(self.name,self.addr))
    #type函数三个参数,第一个参数是类名,字符串格式;第二个参数是它所继承的类,元组形式;第三个参数是它的属性字典,字典形式,可以是数据属性也可以是函数属性
TSchool = type('School',(object,),{'__init__':__init__,'showinfo':showinfo,'size':32000})
print(TSchool.__name__)
print(TSchool.__dict__)
tschool = TSchool('浙江大学','浙江省杭州市')      #实例化
print(tschool.size) #查看数据属性size
tschool.showinfo()  #调用类的showinfo方法

三.自定义元类
我们知道所有未经说明的类的元类都是type,所有的类都是继承了type元类。
元类

转载于:https://blog.51cto.com/10836356/2113338

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值