классы Python и область видимости переменных - PullRequest
0 голосов
/ 13 мая 2011
class Test:

    def c(self, args):
        print args

    def b(self, args):
        args.append('d')

    def a(self):
        args = ['a', 'b', 'c']
        self.b(args)
        self.c(args)

Test().a()

Почему не печатается ['a', 'b', 'c']?

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Когда вы передаете список функции, вы действительно передаете ей указатель на список, а не копию списка.Таким образом, b добавляет значение к исходному args, а не к его локальной копии.

1 голос
/ 13 мая 2011

Параметр, который вы передаете методам b и c, является ссылкой на список args, а не его копией. В методе b вы добавляете в тот же список, который вы создали в методе a.

См. этот ответ для более подробного объяснения передачи параметров в Python.

...