Python:函数作为类的属性,而不是方法

时间:2018-05-17 18:05:42

标签: python

我想拥有类的属性,它存储了一些函数,但是这个函数不是类的方法,稍后会被其他组件调用,完全超出类本身的范围,所以类只是容器对于具有功能的属性。但是使用TypeError: unbound method

调用此函数失败
def f(x): print x
class A:
    not_method = f
A.not_method(10)

有没有办法抑制此错误?显而易见的方法是存储由某些数据对象扭曲的函数,如元组,但它似乎不那么优雅。

def f(x): print x
class A:
    not_method = (f,)
A.not_method[0](10)

@staticmethod的建议解决方案并不那么酷,原因如下: - 正式地,属性根本不是一个方法,它只是具有一些外部函数的属性 - @staticmethod装饰器不适用于属性赋值

0 个答案:

没有答案