2012-11-23 16 views
9

Sono nuovo di Python. Ho familiarità con Java, C/C++ e OCaml. Capisco Lambda Calculus e elementary Type Theory a causa di un corso di linguaggi di programmazione che ho frequentato all'Università.Sistema di tipo Python - Oggetto vs tipo

Armati di queste premesse, ho cercato di leggere questo - http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html

Da qualche parte verso il basso, cita questo:

  • (tipo 'oggetto') è un esempio di (tipo 'tipo')
  • (tipo 'oggetto') è una sottoclasse di nessun oggetto.
  • (tipo 'tipo') è un'istanza di se stesso.
  • (type'type ') è una sottoclasse di (tipo di 'oggetto')

io non sono in grado di avvolgere il mio povero cervello intorno a questo:

  • (tipo 'oggetto') è un'istanza di (tipo 'tipo')
  • (tipo 'tipo') è una sottoclasse di (tipo di 'oggetto')

What the bleep sta succedendo qui? Quello che voglio sentire sono ragioni estremamente approfondite su cosa sta succedendo esattamente qui e perché le cose sono come sono. Non ci sono ragioni o analogie superficiali per favore.

risposta

4

Sta parlando specificatamente dell'oggetto type. Per type, tutti i tipi ereditano da <type 'type'>.

Credo che l'altra affermazione è solo sottolineando che <type 'type'> è un object; un esempio ho pensato di guardare più in basso:

t = list.__class__ # <type 'type'> 
t.__bases__ # (<type 'object'>,) 
0

perché la nozione di tipo è lo stesso di classe che si può sottoclasse tipo con le normali tecniche orientate agli oggetti e la sintassi di classe per personalizzarlo.

E poiché le classi sono in realtà delle istanze della classe del tipo, la creazione di classi da sottoclassi di tipo personalizzate consente di implementare tipi di classi personalizzati.

In classi di nuovo stile:

  • tipo è una classe che genera classi definite dall'utente.
  • I metaclassi sono sottoclassi della classe del tipo.
  • Gli oggetti di classe sono istanze della classe del tipo o una sottoclasse dello stesso.
  • Gli oggetti di istanza vengono generati da una classe.
Problemi correlati