Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti / Introspezione degli oggetti
La catena di ereditarietà
Quando una classe eredita da un’altra, puoi chiedere l’intera catena
di tipi su cui è costruita. Il metametodo .^mro restituisce
questa catena: il nome sta per method resolution order,
l’ordine in cui Raku cerca un metodo.
class Animal {
}
class Dog is Animal {
}
say Dog.^mro; # ((Dog) (Animal) (Any) (Mu))Leggendo da sinistra: un Dog è prima se stesso, poi un
Animal (il suo genitore), poi Any e
Mu — i due tipi da cui ogni oggetto Raku eredita in cima a
tutto. Quando chiami un metodo su un Dog, Raku percorre
questo elenco da sinistra a destra e usa il primo metodo corrispondente
che trova. È esattamente per questo che il metodo di una figlia
sovrascrive quello della genitrice: la figlia compare prima nella
catena.
Per una classe senza genitore esplicito la catena è più corta: solo
la classe stessa, seguita da Any e Mu.
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Introspezione degli oggetti | Quiz — Introspezione →
💪 Oppure vai direttamente agli esercizi di questa
sezione.