如何让python中的类变量引用同一类的静态方法



我有一个类,它有一个类别变量和一个静态方法,我需要让类别变量包含对静态方法的回调。

该类看起来像:

class Test(object):
    ref = ???? #this should be my reference
    @staticmethod
    def testmethod(anyparam="bla"):
        print "it works"

我该怎么做?这可能吗?

我正在使用python 2

编辑:真正的例子是:

class reg(cmd): 
    bla = {
        'def': [ ... ],
        'rem': [ ...,
            PIPE.return_response(fail_callback=HERE_I_NEED_THE_REF),
            ...
        ]
    }
    @classmethod
    def testmethod(cls, aco):
        print "i want to see this on fail"

在创建类期间引用静态方法的问题是正确的。Test还不在名称空间中,即使在testmethod下面定义ref,静态方法定义的魔力也不完整。但是,您可以在创建类之后对其进行修补:

class reg(cmd): 
    bla = {
        'def': [ ... ],
        'rem': [ ...,
            PIPE.return_response(fail_callback=HERE_I_NEED_THE_REF),
            ...
        ]
    }
    @classmethod
    def testmethod(cls, aco):
        print "i want to see this on fail"
Test.ref["rem"][??] = PIPE.return_response(fail_callback=Test.testmethod)

如果我正确理解你的问题,你可以这样做。

class Test(object):
    def __init__(self):
        self.ref = self.testmethod
    @staticmethod
    def testmethod(anyparam="bla"):
        print "it works"

只需在类外定义类变量,遵循其定义的其余部分:

class reg(cmd):
    @classmethod
    def testmethod(cls, aco):
        print "i want to see this on fail"
reg.bla = {
        'def': [ '...' ],
        'rem': [ '...',
            PIPE.return_response(fail_callback=reg.testmethod),
            '...'
        ]
    }

最新更新