Python 未从\uu new中调用方法__
在下面的代码中,我试图理解init和new。我遇到的问题是从未调用过callBeforeInit()方法 请让我知道为什么它没有被调用,以及如何调用它 代码:Python 未从\uu new中调用方法__,python,new-operator,init,Python,New Operator,Init,在下面的代码中,我试图理解init和new。我遇到的问题是从未调用过callBeforeInit()方法 请让我知道为什么它没有被调用,以及如何调用它 代码: class varargs: def __new__(cls): print("in object creation") callBeforeInit() return super(varargs, cls).__new__(cls) #return object.__new__(cl
class varargs:
def __new__(cls):
print("in object creation")
callBeforeInit()
return super(varargs, cls).__new__(cls)
#return object.__new__(cls)
def __init__(self):
print("in object indtansiation")
def callBeforeInit():
print("called before init")
v = varargs()
in object creation
Traceback (most recent call last):
File "d:\python workspace\Varargs.py", line 15, in <module>
v = varargs()
File "d:\python workspace\Varargs.py", line 5, in __new__
callBeforeInit()
NameError: name 'callBeforeInit' is not defined
错误:
class varargs:
def __new__(cls):
print("in object creation")
callBeforeInit()
return super(varargs, cls).__new__(cls)
#return object.__new__(cls)
def __init__(self):
print("in object indtansiation")
def callBeforeInit():
print("called before init")
v = varargs()
in object creation
Traceback (most recent call last):
File "d:\python workspace\Varargs.py", line 15, in <module>
v = varargs()
File "d:\python workspace\Varargs.py", line 5, in __new__
callBeforeInit()
NameError: name 'callBeforeInit' is not defined
对象创建中的
回溯(最近一次呼叫最后一次):
文件“d:\python workspace\Varargs.py”,第15行,在
v=varargs()
文件“d:\python workspace\Varargs.py”,第5行,在新的__
callBeforeInit()
NameError:未定义名称“callBeforeInit”
在创建对象之前会调用new,因此此时不存在此类方法
应该是
class varargs:
def __new__(cls):
print("in object creation")
cls.callBeforeInit()
return super(varargs, cls).__new__(cls)
#return object.__new__(cls)
def __init__(self):
print("in object indtansiation")
@classmethod
def callBeforeInit(cls):
print("called before init")
v = varargs()
您的代码并不是指一个方法,比如
cls.callBeforeInit
,而是指一个词汇范围的可调用方法,即callBeforeInit
。正如错误所说,没有定义这样的东西。