将Python对象的变量作为函数调用,而不传递调用对象

The*_*ob. 6 python static-methods python-2.7

我有这样的结构:

def foobar():
    print('FOOBAR!')

class SampleClass:
    foo = foobar
    def printfunc(self):
        self.foo()
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为原始foobar函数无法处理self传递给它 - 它不是任何类或对象的一部分开始.Python也不会让我添加@staticmethod装饰器.

我无法控制定义foobar,我可能必须覆盖foo子类的值.

如何在不传递调用它的对象的情况下调用foo?

vau*_*tah 6

装饰器是普通函数,您应该能够staticmethod(foobar)在类定义中显式调用

class SampleClass:
    foo = staticmethod(foobar)
    def printfunc(self):
        self.foo() # Prints 'FOOBAR!'
Run Code Online (Sandbox Code Playgroud)