下面的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
我得到以下错误:
^{pr2}$
好吧,我不想说第一个,但第二个选择肯定是正确的:-)
问题是默认参数在编译时被计算,但此时
NetVend
不存在于该范围中,因为(显然)类本身还没有完全求值。在方法是将默认值设置为“无”,然后在方法中进行检查:
在定义类名时,不能引用该类名。在
类主体作为本地命名空间执行;您可以将函数和属性作为本地名称引用。在
此外,函数关键字参数的默认值在定义时间绑定,而不是在调用方法时绑定。使用
None
作为哨兵。在而不是:
使用:
^{pr2}$您可能希望将该类用作实例的工厂,而不是用作本质上是函数的命名空间。即使您只使用了一个实例(单例实例),但首先实际创建一个实例还是有好处的。在
相关问题 更多 >
编程相关推荐