How well do you know Python?

Chris Angelico rosuav at gmail.com
Tue Jul 5 07:50:31 EDT 2016


On Tue, Jul 5, 2016 at 9:33 PM, Peter Otten <__peter__ at web.de> wrote:
> Chris Angelico wrote:
>
>> On Tue, Jul 5, 2016 at 6:36 PM, Peter Otten <__peter__ at web.de> wrote:
>>> What will
>>>
>>> $ cat foo.py
>>> import foo
>>> class A: pass
>>> print(isinstance(foo.A(), A))
>>> $ python -c 'import foo'
>>> ...
>>> $ python foo.py
>>> ...
>>>
>>> print?
>>
>> I refuse to play around with isinstance and old-style classes.
>> Particularly when circular imports are involved. Run this under Python
>> 3 and/or explicitly subclass object, and then I'd consider it. :)
>
> The intended lesson was that there may be two distinct classes
>
> __main__.A and foo.A
>
> Even though not just classes, but every object created in the script is
> affected this seems to cause the most subtle bugs.
>
> Maybe the setup can be simplified or the question rephrased to make this
> clearer.

Like I said, change the commands to "python3", or explicitly subclass
object "class A(object): pass", and then it'll be using new-style
classes.

The two distinct classes problem is a very real one, and comes of
circular (or not-technically-circular, as in the second case) imports.

ChrisA



More information about the Python-list mailing list