papush!
e8be8b52ab
implémentation du patron Observateur dans la classe Observer qui permet à un objet d’être notifié quand une propriété d’un autre objet est modifiée. CollideRect observe maintenant les propriétés x et y de l’entité à laquelle il appartient et met à jour son rect accordément.
15 lines
445 B
Python
15 lines
445 B
Python
class Observer(object):
|
|
def __init__(self):
|
|
super().__setattr__('_subscribers', {})
|
|
|
|
def subscribe(self, name, cb):
|
|
if name not in self._subscribers:
|
|
self._subscribers[name] = []
|
|
self._subscribers[name].append(cb)
|
|
|
|
def __setattr__(self, name, val):
|
|
if name in self._subscribers:
|
|
for cb in self._subscribers[name]:
|
|
cb(val)
|
|
super().__setattr__(name, val)
|