Как коллекции python принимают несколько типов данных? - PullRequest
0 голосов
/ 10 июля 2020

Самая популярная версия python - CPython, записанная в C. Я хочу знать, как можно написать коллекцию python, используя C, когда массивы C могут одновременно хранить только данные определенного типа?

1 Ответ

0 голосов
/ 10 июля 2020

Это не то, как python делает это в C, но я написал небольшой интерпретируемый язык в Java (который также допускает только массивы / списки с 1 типом данных) и реализовал списки смешанных типов. У меня был интерфейс Value и класс для каждого типа значения, и эти классы реализовали интерфейс Value. У меня был класс FunctionValue, класс StringValue, класс BooleanValue и класс ListValue, каждый из которых реализовывал интерфейс значений. Класс ListValue имеет поле типа List<Value>, которое содержит элементы списка. Все методы интерфейса Value и его реализующие классы, которые выполняют такие вещи, как добавление чисел c, добавление строк, доступ к списку, вызов функций и т. Д. c. сначала возьмите объекты Value и сделайте разные вещи в зависимости от того, какой это фактический вид Value.

Вы можете сделать что-то подобное в C, хотя и на более низком уровне, поскольку у него нет интерфейсов и классов для помочь вам управлять своими типами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...