Как я могу создать круговую ссылку на кортежи? - PullRequest
2 голосов
/ 09 ноября 2019

По историческим причинам (читай: ужасные type(t) == tuple проверки) я чувствую, что мне нужно заморозить круговой график как коллекцию tuple объектов. Это, очевидно, не идеально:

>>> head = ("head", None)
>>> a = ("a", ("b", ("c", head)))
>>> head[1] = a
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    head[1] = a
TypeError: 'tuple' object does not support item assignment

Я, однако, на самом деле не большой сторонник TypeError s, и подозреваю, что с помощью хакерских атак, связанных с реализацией, это можно сделать.

  • Как я могу создать это чудовище, не рискуя выйти за границы или вызвать другое неопределенное поведение C?
  • Может ли часть, освобождающая от циклических зависимостей, сборщик мусора справиться с такой вещью?
...