How to import all things defined the files in a module directory in __init__.py?

Peng Yu pengyu.ut at gmail.com
Thu Sep 22 23:02:58 EDT 2016


On Thu, Sep 22, 2016 at 8:35 PM, Ben Finney <ben+python at benfinney.id.au> wrote:
> Peng Yu <pengyu.ut at gmail.com> writes:
>
>> On Wed, Sep 21, 2016 at 11:14 PM, Ben Finney <ben+python at benfinney.id.au> wrote:
>> > [Importing ‘*’ from a module] will also make the names in the code
>> > impossible to automatically match against where they came from.
>> > Explicit is better than implicit; you are proposing to make an
>> > unknown horde of names in the code implicit and untraceable.
>>
>> This will make refactoring easy. If everything is explicit, when one
>> do refactoring, at two places need to be changed which can be a
>> burden.
>
> That's completely backward: Importing ‘*’ from the module makes
> refactoring significantly *more* difficult.
>
> With explicit ‘import foo; foo.lorem()’, an automated tool can know that
> when ‘lorem’ changes to a different name, this module's use of
> ‘foo.lorem’ should also change.

Is there such a good automated tool for python refactoring?

> With non-explicit ‘from foo import *; lorem()’, then an automated too
> has *no way* of knowing that ‘lorem’ should change when you alter that
> name in the ‘foo’ module.
>
> So no, what you say above is the opposite of correct. Instead, using
> star import makes a rename *more* difficult to do correctly.
>
> --
>  \      “Faith is generally nothing more than the permission religious |
>   `\     people give to one another to believe things strongly without |
> _o__)      evidence.” —Sam Harris, _Letter to a Christian Nation_ 2006 |
> Ben Finney
>
> --
> https://mail.python.org/mailman/listinfo/python-list



-- 
Regards,
Peng



More information about the Python-list mailing list