
深入解析Python的__new__、__init__和__call__方法
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本篇文章详细探讨了Python中的三个重要魔术方法:__new__、__init__ 和 __call__。通过具体示例解释它们的功能与区别,帮助读者深入了解这些机制在类创建及对象行为定制中的作用。
`__new__`: 对象的创建是一个静态方法,第一个参数是cls。(因为对象还未被创建出,所以不可能使用self作为参数)
`__init__`: 对象的初始化是一个实例方法,第一个参数是self。
`__call__`: 使对象可调用。注意这指的是已经存在的对象而非类本身。先有创建后才有初始化,即首先执行的是`__new__`, 然后再执行`__init__`.
以上解释可能不够直观, 下面通过例子来进一步说明:
1. 对于`__new__`
```python
class Bar(object):
pass
class Foo(object):
def __new__(cls, *args, **kwargs):
return Bar()
print(Foo()) # 输出的是Bar的实例,而非Foo的实例。
```
这段代码中定义了两个类,`Foo`和`Bar`, `Foo.__new__()`方法返回了一个新的`Bar`对象。所以当调用`Foo()`时, 返回值是基于`Bar()`.
全部评论 (0)
还没有任何评论哟~


