Python интернирует строки?
В Java явно объявленные строки интернируются JVM, поэтому последующие объявления одной и той же строки приводят к двум указателям на один и тот же экземпляр String, а не к двум отдельным (но идентичным) строкам.
Например:
public String baz() {
String a = "astring";
return a;
}
public String bar() {
String b = "astring"
return b;
}
public void main() {
String a = baz()
String b = bar()
assert(a == b) // passes
}
Мой вопрос заключается в том, делает ли CPython (или любая другая среда выполнения Python) то же самое для строк? Например, если у меня есть какой-то класс:
class example():
def __init__():
self._inst = 'instance'
И создайте 10 экземпляров этого класса, будет ли у каждого из них переменная экземпляра, ссылающаяся на одну и ту же строку в памяти, или я получу 10 отдельных строк?