开发者

Python newbie having a problem using classes

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'
p开发者_如何学JAVArint 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:

x = MyClass()
x.f()

(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:

class MyClass(object):
    def f():                 #no self parameter
        return 'hello world'
print MyClass.f()


Create an instance of your class: m = MyClass()

then use m.f() to call the function

Now 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) equals m.f(), where m is an instance object of class MyClass.

Good luck!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜