• 技术文章 >常见问题 >Python常见问题

    python中实例化使用new方法吗

    silencementsilencement2019-12-07 14:00:35原创2784

    python中如何来创建实例对象?

    让我们以一个Foo类开始:

    class Foo(object):
        def __init__(self, x, y=0):
            self.x = x
            self.y = y

    当你实例化它(即创建该类的一个新的实例)时发生了什么?

    f = Foo(1, y=2)

    对Foo的调用到底调用了什么函数或方法呢?大多数新手甚至许多有经验的Python开发者会立刻回答:调用了__init__方法。如果你停下来仔细想1秒,你会发现这远不是一个正确答案。

    推荐学习《python教程

    __init__并没有返回一个对象,但是调用Foo(1, y=2)确实返回了一个对象。而且,__init__预期一个self参数,但是当我们调用Foo(1, y=2)时这里并没有这个参数。这里会有更复杂的工作。在这篇文章中,让我们探究下在Python中实例化一个类时到底发生了什么。

    构造顺序

    在Python中实例化一个对象包含了几个阶段,但它的妙处在于它们自身是Pythonic(python之禅)的——理解这些步骤使得我们对Python整体有多一点的了解。Foo是一个类,但是Python中的类也是对象!类、函数、方法以及实例都是对象,并且无论何时你将一对括号放在它们的名字后面时,就会调用它们的__call__方法。所以Foo(1, y=2)是等价于Foo.__call__(1, y=2)的。__call__方法是定义在Foo的类中的。Foo的类是什么呢?

    >>> Foo.__class__
    <class 'type'>

    所以Foo是类型type的一个对象并且调用__call__返回一个Foo类的对象。

    专题推荐:实例化
    上一篇:python如何创建模块 下一篇:怎么短时间学好python

    相关文章推荐

    • Python类调用实例方法• python闭包详解(实例)• python如何实例化对象• python中实例化是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网