After a discussion on #python on Freenode, I'm here. The gist of it is: > Falc - Signature of method 'Pharm.foo()' does not match signature of base > method in class 'Base'
What's the right way of specialising the children and leaving the Base pretty much empty? Specifically I want: • All implementers to be forced to implement Base's method • Base to be able to do very basic things with kwargs, namely log it (to a file like stdout or a db) • Support for [at least] Python 3.6–3.9 (I don't think `Protocol` has been backported?) • Implementors to have access to the proper name, rather than having to unpack kwargs Should I be using a Base class? - Metaclass? - Something else entirely? - I know giving `b` a default value would resolve the [PyCharm] linter error… but I want it to be a required argument. Full example: from abc import ABC, abstractmethod class Base(ABC): @abstractmethod def foo(self, a, **kwargs): """ :param a: var :type a: ```int``` :param **kwargs: keyword args :type **kwargs: ``dict`` """ print(a) class Pharm(Base): def foo(self, a, b): """ :param a: var :type a: ```int``` :param b: var :type b: ```int``` """ super(Pharm, self).foo(a=a) Thanks, Samuel Marks Charity <https://sydneyscientific.org> | consultancy <https://offscale.io> | open-source <https://github.com/offscale> | LinkedIn <https://linkedin.com/in/samuelmarks> -- https://mail.python.org/mailman/listinfo/python-list