Проблема с вызовом функции класса 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 шт):

Автор решения: h g

Проблема в том, что ты b не делаешь экземпляром класса B, а просто ссылаешься на этот класс. Поэтому, когда ты вызываешь метод func в self ничего не передается, ведь self принимает только экземпляры класса, а сам класс он не подставляет автоматически. Решение проблемы: b = B() - тут ты создаешь экземпляр класса. Чтобы лучше понять проблему, попробуй вызвать метод func через B B.func() - вот так. Или так: A.func(). https://pythontutor.com/visualize.html#mode=edit Этот визуализатор поможет тебе понять, что происходит

→ Ссылка