Concetti Chiave

  • Gli attributi privati in Python iniziano con doppio underscore (__), rendendoli invisibili al di fuori della classe e nelle sottoclassi.
  • Gli attributi protetti, contraddistinti da un singolo underscore (_), sono accessibili all'interno della classe e delle sue sottoclassi, ma non pubblicamente.
  • La sottoclasse eredita tutte le operazioni della superclasse, garantendo che ogni metodo della superclasse sia valido anche nella sottoclasse.
  • Il metodo super() consente di accedere e utilizzare i metodi della superclasse all'interno della sottoclasse, permettendo il "method overriding".
  • La terminologia di ereditarietà include concetti come classe base, sottoclasse e la relazione di derivazione tra classi.

Attributi privati

Indice

  1. Attributi privati e protetti
  2. Ereditarietà e sottoclassi

Attributi privati e protetti

Attributi private: iniziano con __, non finiscono con __, cioè --nome

Sono privati alla classe di definizione, non è visibile fuori dalla classe e neppure nelle sottoclassi

Attributi protetti

Attributi protetti: di fatto si comportano come attributi e metodi pubblici ma vengono usati per chiarire il ruolo di alcuni nomi definiti nella classe

Attributi e metodi protetti possono essere modificati all'interno della classe | o delle sottoclassi | che li definiscono.

Per definire ed accedere ad attributi e metodi protetti anteponiamo un singolo underscore (_) al loro nome.

Sottoclassi – ereditarietà

Ereditarietà e sottoclassi

Ogni operazione della superclasse ha senso anche sulla sottoclasse
Class point:

Class movpoint(point):

Terminologia equivalente:

Movpoint è sottoclasse di point

Point è la superclasse (immediata) di point

Anche: movpoint è basata su point, è derivata da point

Point è la classe base di movpoint

Instanceof(object,class)

Quando si eredita un metodo, si può ridefinirlo (override)

Metodo super():super() restituisce l'oggetto (l'istanza) dove è chiamato, ma vista nella sua superclasse. È un "self" spostato nella sua superclasse

Class point:

def __init__(self,xx,yy):

self.x=xx

self.y=yy

Class colpoint(point):

def __init__(self,xx,yy,col):

super().__init__(xx,yy)

self.c=col

Dynamic method:

- lookup

- dispatch


Domande da interrogazione

  1. Qual è la differenza tra attributi privati e protetti in una classe?
  2. Gli attributi privati, che iniziano con due underscore (__), non sono visibili al di fuori della classe in cui sono definiti, nemmeno nelle sottoclassi. Gli attributi protetti, invece, iniziano con un singolo underscore (_) e possono essere modificati all'interno della classe e delle sue sottoclassi, comportandosi come attributi pubblici per chiarire il loro ruolo.

  3. Come funziona l'ereditarietà tra classi in programmazione?
  4. L'ereditarietà consente a una sottoclasse di ereditare operazioni dalla sua superclasse. Ad esempio, se "movpoint" è una sottoclasse di "point", tutte le operazioni definite in "point" sono valide anche in "movpoint". Inoltre, i metodi ereditati possono essere ridefiniti (override) nella sottoclasse.

  5. Cosa fa il metodo super() in una sottoclasse?
  6. Il metodo super() restituisce l'oggetto dell'istanza nella sua superclasse, permettendo di accedere ai metodi e attributi definiti nella superclasse. Questo è utile per estendere o modificare il comportamento di un metodo ereditato.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community