Проблема с вызовом функции класса Python
class A:
def func(self):
print('1')
class B(A):
def func2(self):
print('2')
b = B
A.func = B.func2
b.func() # B.func2() missing 1 required positional argument: 'self'
Как я понимаю, мы аргумент self передаем автоматически. Проблема явно не в доступе к функции родителя(аналогичная проблема и с дочерним классом) Не могу понять что не так
Ответы (1 шт):
Проблема в том, что ты b не делаешь экземпляром класса B, а просто ссылаешься на этот класс. Поэтому, когда ты вызываешь метод func в self ничего не передается, ведь self принимает только экземпляры класса, а сам класс он не подставляет автоматически. Решение проблемы: b = B() - тут ты создаешь экземпляр класса.
Чтобы лучше понять проблему, попробуй вызвать метод func через B B.func() - вот так. Или так: A.func().
https://pythontutor.com/visualize.html#mode=edit
Этот визуализатор поможет тебе понять, что происходит