Question
How to prevent a function from being overridden in Python
Is there a way to make a class function unoverriddable? Something like Java's final
keyword. I.e, any overriding class cannot override that method.
Question
Is there a way to make a class function unoverriddable? Something like Java's final
keyword. I.e, any overriding class cannot override that method.
Solution
You could add a comment in there to the effect of:
# We'll fire you if you override this method.
It's surprising how well low-tech solutions like this work in practice.
Solution
The issue is you are trying to write in Python using Java philosophies. Some thing carry over, but not all of them. In Python you can do the following and it is perfectly fine, but it completely goes against how Java thinks of objects.
class Thing(object):
x = 1
something = Thing()
something.y = something.x
If you really want it, you can try the code posted here. But as you can see, there is a lot of code there to get it to do what you want. It also should be noted that even the person that posted the code says it can be bypassed using __dict__
or object.__setattr__
.