我有一个类,它有一个类别变量和一个静态方法,我需要让类别变量包含对静态方法的回调。
该类看起来像:
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),
'...'
]
}