En __qualname__
est utile pour moi car il contextualise les fonctions ; cependant, il est difficile pour moi de l'utiliser dans mon cas d'utilisation car :
-
__qualname__
renvoie une chaîne de caractères. Dans mon cas d'utilisation, j'ai besoin de références à l'objet (aux objets) parent(s). -
__qualname__
renvoie parfois lesuper
au lieu de la classe référencée. Par exemple :class Parent(): def __init__(self): pass class Child(Parent): pass print(Child.__init__.__qualname__) # Prints: "Parent.__init__"
-
Le paquet que je suis en train de développer doit être robuste, et les cas limites de
__qualname__
ne sont pas documenté pour autant que je sache.
En dehors de analyse du fichier Python con ast
, peut __qualname__
peut-elle être réimplémentée en Python3 avec inspection ? Comment Python implémente-t-il __qualname__
? En réimplémentant la fonctionnalité de base, je pense pouvoir l'adapter à mon cas d'utilisation.
Recherches antérieures :
- PEP 3155 : https://www.python.org/dev/peps/pep-3155/
- Python 2
qualname
la mise en œuvre : https://github.com/wbolster/qualname/blob/master/qualname.py - Analyse
__qualname__
pour obtenir des références : Obtenir la classe définissant l'objet d'une méthode non liée en Python 3 - Python 2
__qualname__
stackoverflow : Reproduire les effets de Python 3.3 __qualname__ dans les versions antérieures de Python
Je n'ai pas réussi à trouver l'implémentation de qualname dans le code source de Python.