Potential pitfalls when going from old-style to new-style classes

Ethan Furman ethan at stoneleaf.us
Wed Nov 19 20:29:34 CET 2014


On 11/19/2014 11:14 AM, Skip Montanaro wrote:
> I discussion on the code-quality list got me thinking. Suppose I have
> an old-style class in a 2.x app:
> 
> class Foo:
>   def __init__(self):
>     blah blah blah
> 
> I still use 2.x exclusively, but anytime I run pylint over a bit of
> code and it complains that Foo is old-school, I make the obvious
> change to inherit from object. While I do this mostly to shut up
> pylint so I can focus on more serious messages, I must admit I have
> never experienced any problem changing from old-style to new-style
> classes. Under what circumstances might this be problematic?

One problem is if your class has dunder methods on the instance -- they will be ignored.

class Foo(object):
   def __init__(self):
       self.__add__ = lambda : 'whatever'

dunder methods are looked up on the class.

--
~Ethan~

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-list/attachments/20141119/7b95b06a/attachment.sig>


More information about the Python-list mailing list