Consider this fairly typical Python class:
class Publisher(object): def __init__(self): self._subscribers =  def publish(self, event): for subscriber in self._subscribers: subscriber.published(event) def subscribe(self, subscriber): self._subscribers.append(subscriber)
If a user of this class has a bug where they accidentally pass something that isn't a
subscribe, it fails slow. You don't find out that you screwed up until the next call to
publish, and by that point, it's likely too late to figure out who, exactly, screwed up.
The only way to deal with this is to insert tedious
isinstance checks everywhere, raise your own
TypeErrors with your own error messages, and so on. The result: nobody ever bothers.
I want to be able to do, instead, something like this:
self._subscribers = list[Subscriber]()
Then I could get a nice
subscribe time instead of
It would also be great if I could do:
self._subscribers = dict[str:Subscriber]()