If we assign some string value to variable and the value of to variable , and then add something to variable , then variable will not change. But this trick won't work with lists: x = '0' y = x x += '0' print(y) # 0 ## x = [0] y = x x += [0] print(*y) # 0 0 This is because lists are actually references to real lists. But how do you make strings behave like lists, and lists behave like strings? How to do this by creating your own new_str and new_list classes? Continue reading...