#python #python-3.x #function #class
#python #python-3.x #функция #класс
Вопрос:
class A:
def __init__(self, x, y):
self.base = x
self.core = y
def addBaseCore(self, initial):
def addBase(z): # vs. def addBase(self, z)
return z self.base
initial = self.core
# vs. Do we pass self to the nested function? e.&. addBase(self, z)
return addBase(initial)
Я новичок в Python, и мне любопытно, как / почему возможно получить доступ к атрибутам экземпляра внутри вложенной функции без явной передачи экземпляра вложенной функции (как показано выше)?
Внутренний метод не является в точности методом экземпляра и не получает экземпляр в качестве аргумента. Каким образом внутренний метод по-прежнему может получать доступ к атрибутам экземпляра?
Спасибо за всю помощь.
Ответ №1:
Нет необходимости передавать self
во вложенную функцию, которая определена внутри вашей функции-члена.
Вот пример использования вашего кода.
a = A(10, 20)
print(a.addBaseCore(30))
Вывод
60
Комментарии:
1. Спасибо за ваш ответ. Я знаю, что фрагмент кода работает так, как изначально предполагалось. Но мне любопытно, почему это работает? Как внутренняя функция получает доступ к экземпляру, если она не является а) методом экземпляра б) не получает экземпляр в аргументах.
2. Внутренняя функция разделяет контекст с внешней функцией. В этом случае внешняя функция является функцией-членом.