下面的Python由于某种原因而失败。
class NetVend:
def blankCallback(data):
pass
def sendCommand(command, callback=NetVend.blankCallback):
return NetVend.sendSignedCommand(command, NetVend.signCommand(command), callback)
def sendSignedCommand(command, signature, callback):
pass
我收到以下错误:
Traceback (most recent call last):
File "module.py", line 1, in <module>
class NetVend:
File "module.py", line 5, in NetVend
def sendCommand(command, callback=NetVend.blankCallback):
NameError: name 'NetVend' is not defined
最佳答案
您仍无法在定义类名称的同时引用它。
类主体作为本地名称空间执行;您可以将函数和属性称为本地名称。
而且,函数关键字参数的默认值是在定义时绑定的,而不是在调用方法时绑定的。请使用None
作为标记。
代替:
def sendCommand(command, callback=NetVend.blankCallback):
return NetVend.sendSignedCommand(command, NetVend.signCommand(command), callback)
使用:
def sendCommand(command, callback=None):
if callback is None:
callback = NetVend.blankCallback
return NetVend.sendSignedCommand(command, NetVend.signCommand(command), callback)
您可能想将类用作实例的工厂,而不是用作本质上是函数的名称空间。即使您仅使用一个实例(单例),实际首先创建一个实例也有好处。
关于python - 定义类时的Python NameError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18613839/