str
как тип
Нельзя заменить тип str
.Это базовый тип, который не может быть имитирован классом Python без использования самого str
.
Таким же образом, вы не можете написать класс int
без использования int
, так как он является встроеннымспособ представления кардинальных значений.
Это происходит потому, что Python является языком высокого уровня.Вы можете думать об этом как об API для использования многих хорошо продуманных функций C, в случае с CPython.Это означает, что у вас нет доступа к ключевым компонентам, таким как указатели, манипуляции с битами и выделение памяти, которые позволили бы вам переопределить некоторые типы, такие как int
, str
или tuple
, без какого-либо их использования в процессе.
str
cast
На более базовом уровне, если вы хотите знать, как работает трубопровод для приведения к строке, это относительно просто.
Функцияstr
вызовет __str__
метод объекта для приведения.Если он не существует, он возвращается к repr
.
def str(obj=''):
if hasattr(obj, '__str__'):
return obj.__str__()
else:
return repr(obj)
. Объект отвечает за форматирование str
, возвращаемого его методом __str__
.