首页 > 代码库 > [Python]剖析类的机理
[Python]剖析类的机理
Python是如何创建类的?
当python的解释器碰到类的定义的时候,它会像对待其他code一样先读取其内容,然后为这个class创建一个新的namespace并且执行其代码。类的定义通常包括变量,方法以及其他类。这些内容都在新的命名空间里面。从类的内容读到到类的对象的产生是通过内置type函数来实现,所以type函数也提供可动态创建类的可能。
用type函数动态创建类的时候,type这个构造函数需要三个参数,分别是类名,基类以及其属性。
type实际上是一个元类,所谓的元类就是可以创建其他类的类。如果一个类的定义中包括一个单独的metaclass项的话,这个指定的metaclass将被用来创建类,而不是内置的type 对象。metaclass的父类是type。元类是我们拥有了在运行时修改其他对象的机会和能力,从而使python语言变得无比的强大和灵活。
在一个类中,如果定义了__call__方法,那么这个类的对象也是可以被调用和执行的。想判断一个类的实例是可以被执行,可以用callable函数来检测。
当python的解释器碰到类的定义的时候,它会像对待其他code一样先读取其内容,然后为这个class创建一个新的namespace并且执行其代码。类的定义通常包括变量,方法以及其他类。这些内容都在新的命名空间里面。从类的内容读到到类的对象的产生是通过内置type函数来实现,所以type函数也提供可动态创建类的可能。
用type函数动态创建类的时候,type这个构造函数需要三个参数,分别是类名,基类以及其属性。
type实际上是一个元类,所谓的元类就是可以创建其他类的类。如果一个类的定义中包括一个单独的metaclass项的话,这个指定的metaclass将被用来创建类,而不是内置的type 对象。metaclass的父类是type。元类是我们拥有了在运行时修改其他对象的机会和能力,从而使python语言变得无比的强大和灵活。
在一个类中,如果定义了__call__方法,那么这个类的对象也是可以被调用和执行的。想判断一个类的实例是可以被执行,可以用callable函数来检测。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。