[issue44803] change tracemalloc.BaseFilter to an abstract class

Anton Grübel report at bugs.python.org
Thu Aug 5 06:05:56 EDT 2021


Anton Grübel <anton.gruebel at googlemail.com> added the comment:

Even it is a private method, it is essential, when you use Snapshot.filter_traces(). Creating a Filter without implementing this method will just result in a runtime error.

https://github.com/python/cpython/blob/029cb4a6adacb650dbfc8ea71d2875ab771fe92e/Lib/tracemalloc.py#L442-L451

For me it feels like a bad practice to just recommend the developer to implement this method instead of enforcing it. Why is there a possibility to state clearly that a class is an abstract class and not use it? Even PEP20 states, "Explicit is better than implicit."

So why is there a way to create an abstract class in Python, just for fun? I don't think so, it is to make the intent very clear. As said, there is probably a lot of old code laying around in Python, which could be modernized by using functionality of newer Python versions, so why not change it? Is there actually any drawback in defining this class as an abstract class or do you actually gain more, because everyone directly understands that an abstract method has to be implemented in the subclass.

@Lukasz: if you ask me, I would change all of them, but I'm definitely lacking the skill and experience to find all those flaws and fix them. I'm happy to help and for me making code better even it is small is always appreciated, if you always think it is not worth the trouble or nothing really to gain, then it will stay that way and more and more of those constructs will arise. In Germany we have a saying, small cattle also make muck :D

But thanks for taking a look, even it was not worth the trouble. I had fun  creating the PR, but you can just do what you like with it.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44803>
_______________________________________


More information about the Python-bugs-list mailing list