知行编程网知行编程网  2022-12-02 23:30 知行编程网 隐藏边栏  1 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python中实例化使用new方法吗的相关知识,希望可以帮到处于编程学习途中的小伙伴

新方法是否用于python中的实例化?

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 秒钟,你会发现这与正确答案相去甚远。

推荐学习《

__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 是类型类型的对象,调用 __call__ 返回类 Foo 的对象。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享