在解释类时,在this链接中,针对以下示例类
class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
提到
然后
MyClass.i
和MyClass.f
是有效的属性引用,分别返回一个整数和一个函数对象
但是当我尝试print MyClass.f
时,它会给我一个错误<unbound method MyClass.f>
。
那么MyClass.f
返回的函数对象在这个上下文中的含义是什么。
答案 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