Python __new__ 方法解析

3
我有以下代码,我知道__new__用于创建类的实例,而__init__方法用于初始化对象的值。
当您返回基类的实例时,__init__是否只调用一次?
我想要的是返回另一个名为A类的实例。有没有办法让__init__配置A类的实例?
# Python program to
# demonstrate __new__ method
  
# class whose object
# is returned
class GeeksforGeeks(object):
    def __str__(self):
        return "GeeksforGeeks"
          
# class returning object
# of different class
class Geek(object):
    def __new__(cls):
        return GeeksforGeeks()
          
    def __init__(self):
        print("Inside init")
          
print(Geek())
Output:

GeeksforGeeks

相关帖子 - undefined
1个回答

5

文档所述:

如果在对象构造期间调用 __new__() 并且它返回 cls 的实例或子类,则新实例的 __init__() 方法将像 __init__(self[, ...]) 一样被调用,其中 self 是新实例,其余参数与传递给对象构造器的参数相同。

如果 __new__() 没有返回 cls 的实例,则不会调用新实例的 __init__() 方法。

所以,不会被调用。您可以手动调用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接