A new-style class inherits from object (or type) where as old-style class does not. In python 3.0 old-style class is removed.
In this post I am going to explore differences between the two.
1: types
Here we can seen that type of obj is not of class but of built-in type instance. Attribute __class__ of obj gives information about class to which it belongs.
So type and __class__ attributes differ for old-style class.
Lets see what happens with New-style class (python 3.6):
type and __class__ attributes does not differ for new-style class.
2: MRO (Method Resolution Order)
In addition to above differences, old-style class does not support mro.
whereas new-style class does have that:
Also one can see that new-style class inherits from a object.
3: super
super() does not works with old-style classes.
Works with new-style
the reason being is that super() expect type object for class In case of old-style type(ABC) is classobj not type But in case of new-style type(NewABC) is type.
4: descriptor protocol
New-style classes have implemented descriptor protocol whereas old-style does not.
5: raising an exception
In new style objects cannot be raised as exception unless derived from Exception.
Thanks for reading.
In this post I am going to explore differences between the two.
1: types
Here we can seen that type of obj is not of class but of built-in type instance. Attribute __class__ of obj gives information about class to which it belongs.
So type and __class__ attributes differ for old-style class.
Lets see what happens with New-style class (python 3.6):
type and __class__ attributes does not differ for new-style class.
2: MRO (Method Resolution Order)
In addition to above differences, old-style class does not support mro.
whereas new-style class does have that:
Also one can see that new-style class inherits from a object.
3: super
super() does not works with old-style classes.
Works with new-style
the reason being is that super() expect type object for class In case of old-style type(ABC) is classobj not type But in case of new-style type(NewABC) is type.
4: descriptor protocol
New-style classes have implemented descriptor protocol whereas old-style does not.
5: raising an exception
In new style objects cannot be raised as exception unless derived from Exception.
Thanks for reading.
No comments:
Post a Comment