В Python str
- это объект, поэтому нет гарантии, как он будет выглядеть в памяти. Возможно, он содержит больше информации, например, длину строки. В вашем случае размер этих «метаданных» составляет, по-видимому, 20 байт.
Возможно, сам объект даже не содержит фактическую строку, а скорее указатель на нее. Если это так, то в вашей ситуации фактическая строка оказывается расположенной через 20 байт после объекта.
В любом случае, это деталь реализации. Ни в одном серьезном коде нельзя полагаться на такое поведение.