Python Language Nouveau style vs classes anciennes


Exemple

Python 2.x 2.2.0

Les classes de nouveau style ont été introduites dans Python 2.2 pour unifier les classes et les types . Ils héritent du type d' object niveau supérieur. Une classe de nouveau style est un type défini par l'utilisateur et très similaire aux types intégrés.

# new-style class
class New(object):
    pass

# new-style instance
new = New()

new.__class__
# <class '__main__.New'>
type(new)
# <class '__main__.New'>
issubclass(New, object)
# True

Les anciennes classes n'héritent pas de l' object . Les anciennes instances sont toujours implémentées avec un type d' instance intégré.

# old-style class
class Old:
    pass

# old-style instance
old = Old()

old.__class__
# <class __main__.Old at ...>
type(old)
# <type 'instance'>
issubclass(Old, object)
# False
Python 3.x 3.0.0

En Python 3, les anciennes classes ont été supprimées.

Les classes de nouveau style dans Python 3 héritent implicitement de l' object , il n'est donc plus nécessaire de spécifier MyClass(object) .

class MyClass:
    pass

my_inst = MyClass()

type(my_inst)
# <class '__main__.MyClass'>
my_inst.__class__
# <class '__main__.MyClass'>
issubclass(MyClass, object)
# True