Python__new__dundor方法
我在下面有以下代码,我知道它__new__用于创建类的实例,并且该__init__方法用于初始化对象的值。
是__init__当您返回基类的一个实例,只叫什么名字?
我想要的是返回另一个名为 class A 的类的实例。有没有办法__init__配置 class 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
回答
如文档中所述:
如果
__new__()在对象构造期间调用并返回 的实例或子类cls,则新实例的__init__()
方法将被调用__init__(self[, ...]),self例如新实例在哪里,其余参数与传递给对象构造函数的参数相同。如果
__new__()不返回 的实例cls,则__init__()不会调用新实例的方法。
所以不,它不会被调用。你可以自己手动调用。