Python中的未绑定方法

时间:2015-03-25 13:12:40

标签: python class

在解释类时,在this链接中,针对以下示例类

class MyClass:
    """A simple example class"""
    i = 12345
    def f(self):
        return 'hello world'

提到

  

然后MyClass.iMyClass.f是有效的属性引用,分别返回一个整数和一个函数对象

但是当我尝试print MyClass.f时,它会给我一个错误<unbound method MyClass.f>

那么MyClass.f返回的函数对象在这个上下文中的含义是什么。

3 个答案:

答案 0 :(得分:2)

它告诉你该方法没有绑定到任何实例。 如果你这样做了:

myinstance = MyClass()
myinstance.f() # "hello world"

它可以工作,或者,你可以使它静止:

class MyClass
    @staticmethod
    def f()
        print "hello world"

MyClass.f()

也会有用

答案 1 :(得分:0)

实例:

>>> your_class = MyClass()
>>> your_class.f()
'hello world'

当你实例时它会受到约束:

>>> your_class.f
<bound method MyClass.f of <__main__.MyClass instance at 0x1244ef0>>

答案 2 :(得分:-1)

这是一个实例方法。您应该使用classmethod或staticmethod,如下所示:

>>> class A():
...    @staticmethod
...    def f(*args):
...      return "hello"
... 
>>> A.f
<function f at 0xb744541c>
>>> print A.f
<function f at 0xb744541c>
>>> print A.f()
hello