adding a simulation mode

andrea crotti andrea.crotti.0 at
Thu Jul 5 11:22:02 CEST 2012

2012/7/5 Dieter Maurer <dieter at>:
> There is a paradigm called "inversion of control" which can be used
> to handle those requirements.
> With "inversion of control", the components interact on the bases
> of interfaces. The components themselves do not know each other, they
> know only the interfaces they want to interact with. For the interaction
> to really take place, a component asks a registry "give me a component
> satisfying this interface", gets it and uses the interface.
> If you follow this paradigm, it is easy to switch components: just
> register different alternatives for the interface at hand.
> "zope.interface" and "zope.component" are python packages that
> support this paradigm. Despite the "zope" in their name, they can be
> used outside of "Zope".
> "zope.interface" models interfaces, while "zope.component" provides
> so called "utilities" (e.g. "database utility", "filesystem utility", ...)
> and "adapters" and the corresponding registries.
> Of course, they contain only the infrastructure for the "inversion of control"
> paradigm. Up to you to provide the implementation for the various
> mocks.

Thanks that's a good point, in short I could do something like:

class FSActions:
      def copy_directories(cls, src, dest)
          raise NotImplementedError


And then have different implementations of this interface.  This would
work, but I don't really like the idea of constructing interfaces that
provide only the few things I need.

Instead of being good APIs they might become just random
functionalities put together to make my life easier, and at that point
maybe just some clear mocking might be even better..

More information about the Python-list mailing list