instance as module

Peter Otten __peter__ at web.de
Fri Jun 19 06:23:09 EDT 2015


Robin Becker wrote:

> I'm trying to overcome a recursive import issue in reportlab.
> 
> Module reportlab.rl_config uses various sources (eg ~/.reportlab_settings)
> to initialize various defaults eg canvas_basefontname. If a user wants to
> utilize reportlab to set up such a default, it's not possible to do so in
> the settings file because a recursive import would occur. Normal defaults
> are always primitive python objects eg float/int/str etc etc.
> 
> If I make the rl_config module into an object (using the GvR blessed
> approach indicated here
> http://stackoverflow.com/questions/2447353/getattr-on-a-module) then I can
> use callables in the settings module and get them evaluated lazily which
> overcomes the recursion.
> 
> Are there any gotcha's that need to be considered when using this instance
> as module approach? My trial implementation seems to work, but it's not
> clear exactly how a module differs from an instance. I have set various
> dunders on the instance eg __file__, __doc__, __all__ & __name__ and I
> made the object a borg, but it still seems a bit hacky.

Do I understand this correctly? You got bitten by a complex setup and now 
you are hoping to improve the situation by making it even more complex?

How about reordering initialisation in such a way that the user defaults are 
the last thing being set?




More information about the Python-list mailing list