Не удалось найти ответ здесь, поэтому публикуем это.
Получал эту ошибку:
main() takes 1 positional argument but 2 were given
Для этого кода, где B
пытается расширить метод A
, который интерн вызывает дополнительный метод класса.
class A:
@classmethod
def run(cls):
cls.main(cls)
@classmethod
def main(cls):
"""Override and set main logic here
"""
pass
class B(A):
title = "Hello"
@classmethod
def run(cls, name):
cls.name = name
super().run()
@classmethod
def main(cls, *args):
"""Override and set main logic here
"""
print(cls.title, cls.name)
B.run('Bob') # Hello Bob