I have a simple function, which I shall call myFunction
. It takes two parameters, performs some calculations on them, and returns the result.
I also have a class, MyClass
, which has a constructor that has a header like this:
__init__(self, bar, fun=myFunction):
When I try to run anything in this class, I get the following error:
MyClass
def __init__(self, bar, fun=myFunction):
NameError: name 'myFunction' is not defined
If I remove this class, I can use myFun in the Python Shell, so what's the deal?
You haven't shown the actual code so it's hard to be sure, but I bet myFunction
is defined after MyClass
. The default value expression is evaluated when the __init__
method is defined, so myFunction
must be defined at that point. Defining it later is too late.