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 的对象。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中pip安装在哪里08/21
- ♥ 如何在python中编写不等号09/02
- ♥ python中断言的使用注意事项08/31
- ♥ 为什么要用 Python 做人工智能?12/27
- ♥ 如何用python脚本测试手机10/28
- ♥ 30个超实用的Python知识12/14
内容反馈