Come posso ottenere le classi genitore di una classe Python?Ottieni genitore/i della classe?
risposta
Utilizzare il seguente attributo:
cls.__bases__
Dal docs:
La tupla di classi base di un oggetto classe.
Esempio:
>>> str.__bases__
(<type 'basestring'>,)
Un altro esempio:
>>> class A(object):
... pass
...
>>> class B(object):
... pass
...
>>> class C(A, B):
... pass
...
>>> C.__bases__
(<class '__main__.A'>, <class '__main__.B'>)
Se si desidera che tutti i antenati piuttosto che solo quelle immediate, usa inspect.getmro:
import inspect
print inspect.getmro(cls)
In pratica, questo fornisce tutte le classi di antenati nell'ordine di risoluzione dei metodi, ovvero l'ordine in cui gli antenati saranno controllati quando risolvono un metodo (o, in realtà, qualsiasi altro attributo - i metodi e gli altri attributi vivono nello stesso namespace in Python, dopo tutto ;-).
Puoi anche usare 'cls .__ mro__' (almeno in Python 3.5) – naught101
Le classi di nuovo stile dispongono di un metodo mro che è possibile chiamare e restituisce un elenco di classi padre nell'ordine di risoluzione dei metodi.
Cosa conta come una classe di nuovo stile? Sembra che posso usarlo con i modelli Django, ma qualsiasi cosa che semplicemente erediti da 'object' non sembra rispondere a' mro'. –
considerare un oggetto 'x', possiamo ottenere l'ordine di risoluzione metodo con la chiamata ' tipo (x) .mro() ' possiamo considerare se' 'x' ha ClassX' come classe base con: 'ClassX in type (x) .mro()' – 648trindade
- 1. Ottieni l'handle della finestra dal nome della classe della finestra
- 2. Ottieni l'istanza della classe per nome della stringa della stringa
- 3. Ottieni il genitore della classe di istanza
- 4. Ottieni tutti __slots__ della classe derivata
- 5. Ottieni il nome dell'oggetto o della classe
- 6. Ottieni il nome della classe genitore?
- 7. Ottieni il nome della classe Ruby senza metodo di classe
- 8. Rails: Ottieni il nome della classe esterna all'interno della preoccupazione
- 9. Ottieni il nome classe dalla classe estesa
- 10. Ottieni la classe proprietaria della funzione Python dal decoratore
- 11. Ottieni il nome della classe padre da bambino con ES6?
- 12. Ottieni tutti gli elementi per nome della classe utilizzando DOMDocument
- 13. Ottieni dinamicamente lo spazio dei nomi della classe PHP
- 14. Ottieni URL di azione all'interno della classe MVC4 .NET
- 15. Ottieni il nome della classe UIViewController in iOS
- 16. Ottieni bytecode dalla classe caricata
- 17. Ottieni il nome classe dall'oggetto Classe
- 18. Ottieni il nome della sottoclasse?
- 19. Ottieni l'altezza della finestra
- 20. Ottieni l'indice della sottostringa
- 21. Ottieni il nome classe da un modulo
- 22. Ottieni l'oggetto classe esterna da un oggetto di classe interna
- 23. Ottieni il nome della superclasse in ES6
- 24. Estensione rapida per l'istanza della classe selezionata
- 25. le istanze della classe Classe
- 26. Ottieni l'indice della scheda attiva
- 27. Ottieni "nome classe" corrente dopo l'ereditarietà classe/prototipo
- 28. Ottieni valori di enumerazione dalla classe
- 29. Ottieni l'attributo dalla classe generata dinamicamente
- 30. Google Inceptionism: ottieni le immagini per classe
@FranckDernoncourt Questo thread è ora il risultato principale di Google per "python get genitore di classe". È leggermente più rilevante delle altre domande SO che compongono i prossimi 3 risultati. Il quinto risultato è una pagina di documenti Python che non dà la risposta, e il sesto risultato è infine una pagina di documenti Python che fornisce la risposta, anche se in profondità in una lunga pagina di testo. –
Perché qualcuno dovrebbe leggere i documenti quando le spiegazioni su SO sono molto più convincenti e di facile accesso? Mi ci sono voluti meno di 5 secondi dal momento in cui mi è venuta questa domanda fino al momento in cui sono arrivato a questa pagina da Google, mentre la ricerca dei documenti mi avrebbe richiesto almeno cinque volte più a lungo e probabilmente un paio di minuti. – jononomo
Come qualcuno che voleva trovare rapidamente questa risposta, ha cercato google, trovato questo link e fatto ciò che avevo bisogno di fare: perché le persone (presumo che il commento di SLott sia stato rimosso) si lagnano di una domanda valida che viene posta? E sì, mi rendo conto di essere estremamente in ritardo per la festa qui. – limasxgoesto0