美文网首页
Python类的创建过程

Python类的创建过程

作者: Yookoe | 来源:发表于2020-03-02 19:46 被阅读0次

类的创建过程

以下说的类指的类本身,例如以下代码:

class Foo:
  def __init__(self):
    pass

则指的 Foo 的创建过程,而不是 Foo 的实例。

1. 解析 MRO 记录(Resolving MRO entries)

根据 MRO 规则解析继承关系

2. 确定元类(Determining the appropriate metaclass)

查找元类的过程遵循以下规则:

  1. 如果没有基类且没有指定 metaclass ,则使用 type()

  2. 如果指定了 metaclass 且它不是 type() 的实例,则直接使用 metaclass

  3. 如果指定了 type() 实例的 metaclass 或者有基类,(the most derived metaclass is used. ??)

3. 准备命名空间(Preparing the class namespace)

当元类确定后,类的命名空间也可以确定了。 如果元类有 __prepare__ 属性,则 namespace = metaclass.__prepare__(name, bases, **kwargs),否则命名空间会初始化为有序的空map(empty ordered mapping.)

4. 执行 Class 内语句(Executing the class body)

类内的语句通过 exec(body, globals(), namespace) 来执行。与正常的 exec() 不同的是当类定义在一个函数内部时其可以访问当前和外层的作用域。

即使在函数内定义的类,其内部的方法也无法访问类的作用域。类内的定义的变量通过类实例或类对象来访问,或者通过 __class__

5. 创建类对象(Creating the class object)

经过以上步骤后,通过 metaclass(name, bases, namespace, **kwargs) 来创建类。

关于 __init__

以上步骤是创建类自身。例如开头的例子,以上步骤只是创建了 Foo__init__ 是类实例化后才执行的,f = Foo() 这时候才会执行 __init__

相关文章

  • Python类的创建过程

    类的创建过程 以下说的类指的类本身,例如以下代码: 则指的 Foo 的创建过程,而不是 Foo 的实例。 1. 解...

  • Python类Class

    创建方式 创建Python类 打开Run Module界面 Python类使用 Python类的init功能

  • Python包及其引入方法

    一、Python包 模块所在目录看做是包,目录名即为包名。 二、Python包创建 创建过程举例(模块中不包含类)...

  • python原类、类的创建过程与方法

    获取对象的类名 python是一门面向对象的语言,对于一切接对象的python来说,咱们有必要深入的学习与了解一些...

  • python原类、类的创建过程与方法

    公众号排版 感觉今晚在虚度光阴啊,都是因为公众号的排版问题。每天写好文章,光是在公众号排版,就感觉很费事。网上有一...

  • 面向对象 六

    目录 1.元类 1.1 类创建过程 1.2 元类控制类的创建 1.3 元类控制类的创建过程案例 1.4 自定义元...

  • Python类的构造与初始化

    在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象。 python中创建...

  • Python中类创建的过程以及元类的理解

    首先类是一个什么东西 类是数据与操作其数据方法的封装 一个定义python类的例子: 于此,能解决python编程...

  • python 创建类

    python算是面向对象语言,由于是动态语言,没有接口的概念。类的定义示例如下: 所有的函数第一个参数都是self...

  • python 类的使用

    创建实例 说明:关于类的这部分,我参考了《Learning Python》一书的讲解。 创建类 创建类的方法比较简...

网友评论

      本文标题:Python类的创建过程

      本文链接:https://www.haomeiwen.com/subject/axbbkhtx.html