self = t
Это не так, и нельзя переписать в , делайте что хотите.В имени Python нет ничего «особенного» в названии self
;это как любая другая переменная (тот факт, что вы должны передать ее явно методам, должен был стать вашей первой подсказкой, в отличие от языков, которые рассматривают this
как ключевое слово, должен был стать вашей первой подсказкой;)), и, как и вседругие переменные, он имеет ссылочную семантику.
self = t
означает «с этой точки и далее (до другого переопределения или до конца области действия), self
больше не ссылается на то, к чему относится этот параметр self
в, но вместо значения, на которое t
ссылается ".
Кроме того, у вас есть опечатка в одном случае вашего __init__
метода ('rigt'), и я предполагаю, что число free
узлы должны быть инвариантами чего-то вроде size - occupied
;в этом случае было бы чётче подсчитывать занятые узлы и использовать метод или свойство для вычисления свободных, вместо того, чтобы пытаться обновлять это число при каждой модификации.
(Более того, что вы, похоже, пытаетесьделать это все виды непифоновых. В частности, идея контейнера, имеющего определенный «выделенный размер», странная, такого рода вещи обычно имеют значение только на стороне C. Забора, что вам нужно двоичное деревоfor? Кроме того, этот метод вообще не собирается уравновешивать дерево. И зачем использовать дерево, если ни один из узлов не хранит какие-либо данные?)