5

我有一个简单的函数,我将调用它myFunction。它接受两个参数,对它们执行一些计算,然后返回结果。

我还有一个类,MyClass它有一个构造函数,它的标题如下:

__init__(self, bar, fun=myFunction):

当我尝试在此类中运行任何内容时,出现以下错误:

MyClass
    def __init__(self, bar, fun=myFunction):
NameError: name 'myFunction' is not defined

如果我删除这个类,我可以在 Python Shell 中使用 myFun,那么有什么关系呢?

4

2 回答 2

13

您没有显示实际代码,因此很难确定,但我敢打赌myFunction是在MyClass. 默认值表达式在__init__定义方法时进行评估,因此myFunction必须在该点定义。稍后定义它为时已晚。

于 2012-06-22T23:45:05.533 回答
-6

myFunction 是一个变量,而不是一个值,因此您不能将其用作默认参数。

也许您可以使用 lambda 函数作为默认参数,而不是声明函数的名称。

于 2012-06-22T23:33:43.400 回答