Python Language Classi vecchio stile e vecchio stile


Esempio

Python 2.x 2.2.0

Le classi di nuovo stile sono state introdotte in Python 2.2 per unificare classi e tipi . Essi ereditano dal tipo di object livello superiore. Una classe di nuovo stile è un tipo definito dall'utente ed è molto simile ai tipi built-in.

# 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

Le classi vecchio stile non ereditano object . Le istanze di vecchio stile vengono sempre implementate con un tipo di instance incorporato.

# 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

In Python 3, le classi vecchio stile sono state rimosse.

Le classi di nuovo stile in Python 3 ereditano implicitamente object , quindi non è più necessario specificare MyClass(object) .

class MyClass:
    pass

my_inst = MyClass()

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