ООП. Почему выводится none?
print(obj1.ChangePartHead(obj1.head, obj))
Выводит на печать то, что вернул метод ChangePartHead объект obj1. Указанный метод не возрвщает ничего, потому и выводится None.
/offtop: Рекомендую использовать ключевое слово __slots__ . Это позволит уменьшить размер объекта класса.