Код: Выделить всё
class PassByReference:
def __init__(self):
self.variable = 'Original'
self.change(self.variable)
print(self.variable)
def change(self, var):
var = 'Changed'
Иногда люди удивляются, что код типа x = 1, где x — имя параметра, не влияет на аргумент вызывающей стороны, а код типа x[0] = 1 влияет. Это происходит потому, что назначение элемента и назначение фрагмента – это способы изменить существующий объект, а не переназначать переменную, несмотря на = синтаксис. См. раздел «Почему функция может изменять некоторые аргументы, воспринимаемые вызывающей стороной, но не другие?» подробнее.
См. также В чем разница между передачей по ссылке и передачей по значению? для важного обсуждения терминологии, не зависящей от языка.
Подробнее здесь: https://stackoverflow.com/questions/986 ... -reference
Мобильная версия