Hi Greg, [me]
--> IMO 'from ... import ...' is EVIL and its use should be banned! <--
[Greg Stein]:
You are being overly strict here. I use this all the time:
from module import submodule ... submodule.Class()
or even
from module.submodule import subsub ... subsub.Blargle()
Okay. Later in my rant I wrote: < Well: at least if people use 'from' to import arbitrary objects and < classes. Using 'from package.subpackage import module' is an idiom, < with which I can live with comfortably. [Greg Stein]:
In other words, "from package import module" is a Fine Thing. It can simplify your code without hiding where the symbols come from.
Yes, you are right. But if you put the facade pattern[*] into use within such packages, this will even simplify your live, if you later have to redesign the internal substructure of your package. [*] Design patterns and especially the "facade pattern" were AFAIK introduced in the so called "Gang of four" book: "Design Patterns - Elements of Reusable Object-Oriented Software", Addison Wesley, 1995. The somewhat similar "whole part" design pattern is discussed in the book "A System of Patterns" written by Buschmann, Meunier, Rohnert, Sommerlad, Stal; published by John Wiley & Sons, New York; 1996; ISBN 0 471 95869 7
In general, I agree with you: importing symbols from a module into your namespace is a Bad Thing.
Fine. Consensus gives a warm and fuzzy feeling. ;-) Regards, Peter