首页 > 编程知识 正文

猿编程,编程有几种类型

时间:2023-05-04 18:47:08 阅读:165629 作者:1943

编程元编程的概念来自LISP和smalltalk

我们写程序是直接写代码,将来能用代码生成我们需要的代码吗? 这就是元编程。

python中

除object以外的所有类都从object类继承

所有类的类型包括type类在内都是type

type类继承自object类,object类的类型也是type类

type类type构建类type(object )-the object’stype返回对象的类型,如type(10 )

type(name,bases,dict )- a new type返回新类型

def_init_(self ) :self.x=1000defshow ) self ) :print ) self._ _ dict _ (x=type ) my type ' _ _ inid

请注意,构建元类一个类可以继承自type类,它不是从object类继承的

classmodemeta(type ) :def_new_ ) cls,*args,**kwargs ) :print ) cls ) print ) *args ) **kwargs )

classmodemeta(type ) :def_new_ ) cls,*args,**kwargs ) :print ) cls )他自己print ) *args ) # name, dict (要构建的类的类属性词典(print(**kwargs ) return super ) ).__new_ ) cls,*args,**Kwargs ) classa ) object,metatats ) ' id': 1000,' _ init _ ' : functiona._ _ init _ at0x 00002057 FD 15 e 18 } id=1000 def _ init _0(ininit _0)

cls就是模式元数据类本身

args如下所示

#a(class(object,) ) __module__': ) _main_ ),(__qualname__ ) 3360 ) a ),id )。

所以变成了这样

classmodemeta(type ) : def _ _ new_ (cls,name,bases,dict ) : return super )._ _ new _ (cls,new _ ) metaclass=ModeMeta(:##a在构建类时查找modemeta的new,然后查找自己的passc=modemeta )、(a,)、(id ) 3360 ) 1000 ) )打印)类型

生成的类的类属性传递给__new__。

在以上的例子中,c类是从a继承的,c的基类也是a。

type ) )构建元类(返回的类) )的类) )。

元类APP表示:

可以通过__new__获取**元类信息、当前类、基类、类属性词典**来操作。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。