Is this a good way to work with init and exception

Cecil Westerhof Cecil at decebal.nl
Mon Jul 20 01:27:46 CEST 2015


On Monday 20 Jul 2015 00:40 CEST, Chris Angelico wrote:

> On Mon, Jul 20, 2015 at 8:19 AM, Cecil Westerhof <Cecil at decebal.nl> wrote:
>>> If two modules import the same module, they get two references to
>>> that same module, not two separate module instances. Since your
>>> parameters appear only to affect the initialization itself, this
>>> is not likely to be a problem (it's not like you'll need to
>>> authenticate with two different sets of credentials, for
>>> instance), but it will mean that the second one will import an
>>> already-initialized module. That's why I suggested the try_init
>>> function which would quietly return an immediate success if the
>>> module had already been initialized. But if this isn't going to be
>>> an issue, then your code's fine.
>>
>> Good to know. I would expect two different instances.
>>
>> I agree that in my case it would not be a problem, but I put the
>> code on GitHub:
>> https://github.com/CecilWesterhof/PythonLibrary/blob/master/twitterDecebal.py
>> I should do my best to circumvent nasty surprises for users of the
>> code. Someone else could use several Twitter accounts at the same
>> time. Is there a way to do this?
>
> Does the instantiation of Core() involve authentication? Is it
> possible to call Core() more than once and use different accounts?
> Your send_message() takes an account identifier, so it might be you
> don't need separate accounts. But if, just very occasionally, you do
> need multiple, here's a possible design style: Have init() return
> the Core as well as stashing it in _core, and then have
> send_message() take an optional keyword argument (in 3.x,
> keyword-only) to choose a different core. That way, it'll by default
> use the most recently initialized core, but you can create multiple
> and manage them yourself if you so choose. (Obviously you'd use
> reinit_allowed=True for all the initializations.)

You are right: core is a general initialisation, so in this case
nothing to worry about. :-D

When I write something where it could make a difference, I should use
your tip.

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof


More information about the Python-list mailing list