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

Reply via email to