Python中的一个常见问题及解决方案

今天突然开始纠结起了一个奇怪的问题了

# Python code
class A():
    def __init__(self, args):
        self.args = self._init_args(args)
def _init_args(self, args):
    # do something
    return args

a = A([“test”, “question”])

这样的逻辑在 Python 中是可以正确的运行的,但是却很奇怪

理论上来说,在__init__过程中,对象 A 的实例 a 还没有实例化完成.但是上边的代码在 a 的实例化尚未完成时就已经调用了实例 a 的方法_init_args 了,这样做是否有一些隐患?是什么机制使 Python 可以这样处理的?


Python中的一个常见问题及解决方案

8 回复

不,__init__是实例化完成后调用的。


我无法理解你的问题

只有实例化后才会调用__init__,不实例化是不会执行的。

class A 的实例 a 是在__new__中创建的,__init__只是用来给新创建的对象 a 赋值

理论上来说,在__init__过程中,对象 A 的实例 a 还没有实例化完成

第一句就错了

new 是创建实例
init 是初始化实例

谢谢各位
看来自己还不够扎实啊,噗

python 中的所谓 initialization 包括两个部分 new init

回到顶部