7 Nov
2016
7 Nov
'16
2:29 p.m.
On Mon, Nov 7, 2016, at 14:01, Andreas Jung wrote:
Python 2.7 is different because all classes are automatically new-style classes. In Python 2.7 you would have to overwrite __getattribute__() but I am on Python 2.3 here.
No :) In Python 3 all classes are new-style classes. In Python 2 (including 2.7) you have to be explicit and either inherit from object (new-style) or not (old-style). In Python 2.7 you get:
class A: pass class B(object): pass type(A) <type 'classobj'> type(B) <type 'type'>
In Python 3 both are of type 'type'. And only new-style classes use '__getattribute__'. '__getattr__' is the right approach for old-style classes in any Python 2 version, even in Python 2.7. Hanno