Seems I have to use the ugly approach of doing things this way:
ids = []
class MyClass:
def __init__(self, name):
ids.append(id(self))
self.name = name
def trigger_procedure(self, name, line, wildcards):
world.Note('Trigger fired.')
myobj = MyClass('myobj')
gc.collect()
for obj in gc.get_objects():
if id(obj) in ids:
method_name, method_obj = inspect.getmembers(obj, inspect.ismethod)[1:][0]
globals()['%s.%s' % (obj.name, method_name)] = method_obj
Or a bit less ugly:
obj_names = []
class MyClass:
def __init__(self, name):
self.name = name
obj_names.append(name)
def trigger_procedure(self, name, line, wildcards):
world.Note('Trigger fired.')
myobj = MyClass('myobj')
for obj_name in obj_names:
exec('method_name, method_obj = inspect.getmembers(%s, inspect.ismethod)[1:][0]' % obj_name)
globals()['%s.%s' % (obj_name, method_name)] = method_obj
At least until I find another way. |