首页 > 编程语言 > 详细

Python基础第23天

时间:2017-03-19 17:15:41      阅读:184      评论:0      收藏:0      [点我收藏+]

一:元类  metaclass

class Foo:
    pass

f1=Foo()
print(type(f1))
print(type(Foo))   #<class ‘type‘>类的类就是type

1、 什么是元类?

元类是类的类,是类的模板

元类是用来控制如何创建类的,正如类是创建对象的模板一样

元类的实例为类,正如类的实例为对象(f1对象是Foo类的一个实例Foo类是 type 类的一个实例)

type是python的一个内建元类,用来直接控制生成类,python中任何class定义的类其实都是type类实例化的对象

2、 创建类的两种方式

方式一:

1 class Foo:
2     def func(self):
3         print(‘from func‘)

方式二:type 方式生成,type实例化的结果

1 def func(self):
2         print(from func)
3 x=1
4 Foo=type(Foo,(object,),{func:func,x:1})

3、自定制元类:

class Mytype(type):
    def __init__(self,a,b,c):
        print(元类的构造函数执行)
        # print(a)
        # print(b)
        # print(c)
    def __call__(self, *args, **kwargs):
        print(=============)
        obj=object.__new__(self)
        self.__init__(obj,*args, **kwargs)  #Foo.__init__
        return obj

class Foo(metaclass=Mytype): #Mytype()4个参数=====》__init__
    def __init__(self,name):
        self.name=name

f1=Foo(laex)
print(f1)
print(f1.__dict__)

 

Python基础第23天

原文:http://www.cnblogs.com/xyd134/p/6580840.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!