Я только что прочитал «isinstance () считается вредоносным» , и это кажется разумным. Короче говоря, это аргумент в пользу отказа от использования этой функции.
Что ж, сейчас я пишу программу, которая принимает входные данные, структурированные в виде дерева, и нуждается в информации о структуре дерева. Не имея времени на реализацию графического интерфейса, я заставляю пользователя записывать его в файл конфигурации (я знаю, что это плохой интерфейс, но график очень плотный). Мои пользователи очень техничны, но не обязательно знают Python. Я выбрал, что файл будет содержать списки списков (списков списков и т.д.), представляющих входные деревья, с конечными элементами, являющимися листовыми узлами деревьев. Я считаю, что это намного лучше, чем навязывать пользователям синтаксис словарей.
Я планирую рекурсивно анализировать списки следующим образом (без использования структуры дерева, давайте упростим и скажем, что TreatLeafNode () должен вызываться на каждом листовом узле):
def parseTree(input):
if isinstance (input, list):
for item in input:
parseTree(item)
else:
treatLeafNode(item)
В свете статьи я интересно, есть ли простой способ рекурсии над этим без использования isinstance () ...
Кто-нибудь знает такой?