Op 17-01-17 om 08:05 schreef Steven D'Aprano:
> I wish to emulate a "final" class using Python, similar to bool:
>
> py> class MyBool(bool):
> ... pass
> ...
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: type 'bool' is not an acceptable base type
>
>
> It doesn't have to be absolutely bulletproof, but anyone wanting to subclass
> my
> class should need to work for it, which hopefully will tell them that they're
> doing something unsupported.
>
> Any hints?
I find those kind of classes annoying as hell and nobody has ever given me a
good
reason for them. What good was it to change Lock from a factory function to a
class if you can't subclass the result anyway.
The result will probably be that users that would prefer to subclass your class
will monkey-patch it. Something like:
class MyLock:
def __init__(self):
self.lock = Lock()
def __getattr__(self, attr):
return getattr(self.lock, attr)
So I wonder what reasons do you have prefering that your users monkey-patch your
class instead of subclassing it?
--
Antoon Pardon
--
https://mail.python.org/mailman/listinfo/python-list