class A:
def __init__(self):
self.name = None
self.a = 10
self.b = 20
self.c = 30
def func1(self, param1, param2):
def inner_func1(self, param1, param2):
print(self, self.a, self.b)
inner_func1(self, param1, param2)
a = A()
print(a)
a.func1(1,2)
Мой первый вопрос: можно ли передавать параметр self
во вложенную функцию метода класса? Я запускаю этот код на python-3.5.2 без проблем, и оба print()
отображают один и тот же адрес экземпляра класса A. Однако python-3.6 жалуется на строку print(self, self.a, self.b)
, что self
не имеет члена a
.
Также интересно, что PyCharm
IDE не выделяет self
в этой строке и говорит, что он "затмевает внешнюю область видимости".
Что именно я делаю неправильно?
self
просто условное, не обязательное) заключается в том, что вам не нужно указывать явный аргумент. Протокол дескриптора позволяет писатьa.func(1,2)
, а неtype(a).func(a, 1, 2)
. - person chepner   schedule 18.03.2020