Acabo de leer "isinstance() considered harmful", y parece razonable. En resumen, argumenta para evitar el uso de esta función.Recursion sobre una lista de listas sin isinstance()
Bueno, ahora estoy escribiendo un programa que toma entradas estructuradas como un árbol, y necesita la información de la estructura del árbol. Sin tiempo para implementar una GUI, le impongo al usuario que la escriba en un archivo de configuración (sé que esta es una mala interfaz, pero el cronograma es muy ajustado). Mis usuarios son muy técnicos, pero no necesariamente conocen Python. Elegí que el archivo contendría listas de listas (de listas de listas, etc.) que representaban los árboles de entrada, y los elementos finales eran los nodos de las hojas de los árboles. Creo que esto es mucho mejor que imponer el sintaxis de diccionarios a los usuarios.
planeo para analizar las listas de forma recursiva como las siguientes (ommiting el uso de la estructura del árbol, vamos a simplificar y decir treatLeafNode() debe ser llamado en cada nodo hoja):
def parseTree(input):
if isinstance (input, list):
for item in input:
parseTree(item)
else:
treatLeafNode(item)
A la luz de la artículo, me pregunto si hay una manera simple de recurse sobre eso sin usar isinstance() ...
¿Alguien sabe uno?
++, consejo de sonido –