def _subscribe(self):
def sgetter(funcname):
def realsgetter(owner, msg):
return owner._subs[funcname](owner, msg)
return realsgetter
# wx classes throw exception if getmember is applied to the instance (self)
methods = inspect.getmembers(self.__class__, inspect.ismethod)
topicmgr = pub.getDefaultTopicMgr()
for mname, method in methods:
pubsubtopic = getattr(method, '_pubrecv', None)
if pubsubtopic:
self._subs[mname] = method
subsgetter = sgetter(mname)
if (not topicmgr.getTopic(pubsubtopic, True) or
not pub.isSubscribed(subsgetter, pubsubtopic)):
setattr(self, mname, subsgetter)
pub.subscribe(subsgetter.__get__(self, self.__class__),
pubsubtopic)
评论列表
文章目录