Im just beginning to mess around a bit with classes; however, I am running across a problem.
class MyClass(object):
def f(self):
return 'hello world'
print MyClass.f
The previous script is returning <unbound method MyClass.f>
instead of the intended value. How do I fix this?
MyClass.f
refers to the function object f which is a property of MyClass. In your case, f is an instance method (has a self parameter) so its called on a particular instance. Its "unbound" because you're referring to f without specifying a specific class, kind of like referring to a steering wheel without a car.You can create an instance of MyClass and call f from it like so:
(This specifies which instance to call f from, so you can refer to instance variables and the like.)
You're using f as a
static method
. These methods aren't bound to a particular class, and can only reference their parameters.A static method would be created and used like so:
Create an instance of your class:
m = MyClass()
then use
m.f()
to call the functionNow you may wonder why you don't have to pass a parameter to the function (the 'self' param). It is because the instance on which you call the function is actually passed as the first parameter.
That is,
MyClass.f(m)
equalsm.f()
, wherem
is an instance object of classMyClass
.Good luck!