我有一个具有类变量和静态方法的类,我需要让类变量包含对静态方法的回调。
该课程如下:
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"
答案 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),
'...'
]
}