Рекурсия по списку без isinstance ()

Я только что прочитал «isinstance () считается вредоносным» , и это кажется разумным. Короче говоря, это аргумент в пользу отказа от использования этой функции.

Что ж, сейчас я пишу программу, которая принимает входные данные, структурированные в виде дерева, и нуждается в информации о структуре дерева. Не имея времени на реализацию графического интерфейса, я заставляю пользователя записывать его в файл конфигурации (я знаю, что это плохой интерфейс, но график очень плотный). Мои пользователи очень техничны, но не обязательно знают Python. Я выбрал, что файл будет содержать списки списков (списков списков и т.д.), представляющих входные деревья, с конечными элементами, являющимися листовыми узлами деревьев. Я считаю, что это намного лучше, чем навязывать пользователям синтаксис словарей.

Я планирую рекурсивно анализировать списки следующим образом (без использования структуры дерева, давайте упростим и скажем, что TreatLeafNode () должен вызываться на каждом листовом узле):

def parseTree(input):
    if isinstance (input, list):
        for item in input:
            parseTree(item)
    else:
        treatLeafNode(item)

В свете статьи я интересно, есть ли простой способ рекурсии над этим без использования isinstance () ...

Кто-нибудь знает такой?

5
задан Emilio M Bumachar 4 May 2011 в 11:37
поделиться