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

时间:2015-03-26 15:21:09

标签: python class variables methods static

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

该课程如下:

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"

3 个答案:

答案 0 :(得分:1)

在类创建期间引用静态方法的问题是正确的。 Test尚未在命名空间中,即使您在ref下定义testmethod,静态方法定义魔法也不会完整。但是,您可以在创建后修补该类:

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)

答案 1 :(得分:0)

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

class Test(object):
    def __init__(self):
        self.ref = self.testmethod

    @staticmethod
    def testmethod(anyparam="bla"):
        print "it works"

答案 2 :(得分:0)

只需按照其定义的其余部分定义类外的类变量:

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),
            '...'
        ]
    }