У меня есть некоторые внешние объекты, которые слушают / обрабатывают черты другого объекта. Как я могу получить список слушателей / обработчиков свойств этих объектов? У меня есть несколько объектов, которые слушают чужие черты, и я хотел бы иметь возможность каким-то образом запросить и определить, какие из них все еще связаны.
Спасибо!
Вот пример использования модуля Enthought Traits:
from traits.api import HasTraits,Str,Int,Float
class GenerateEvents ( HasTraits ):
name = Str
age = Int
weight = Float
class ListenEvents ( HasTraits ):
def _name_changed ( self, object, name, old, new ):
print "_name_changed:", object, name, old, new
def _age_changed ( self, object, name, old, new ):
print "_age_changed:", object, name, old, new
def _weight_changed ( self, object, name, old, new ):
print "_weight_changed:", object, name, old, new
class AnotherListenEvents ( HasTraits ):
def _name_changed ( self, object, name, old, new ):
print "Another _name_changed:", object, name, old, new
def _age_changed ( self, object, name, old, new ):
print "another _age_changed:", object, name, old, new
def _weight_changed ( self, object, name, old, new ):
print "another _weight_changed:", object, name, old, new
ge = GenerateEvents()
le = ListenEvents()
ale = AnotherListenEvents()
ge.set( name = 'Joe', age = 22, weight = 152.0 )
ge.add_trait_listener( le )
ge.add_trait_listener( ale )
ge.set( name = 'Mike', age = 34, weight = 178.0 )
Обратите внимание, что ge
имеет два слушателя, le
и ale
. Однако, учитывая ge
, как я могу узнать, что это за слушатели? Обратите внимание, что слушатели могут динамически добавляться / удаляться в код, поэтому они не фиксируются.
Надеюсь, это немного проясняет.