[Python-Dev] PEP 575: Unifying function/method classes (original) (raw)

Serhiy Storchaka storchaka at gmail.com
Sun Apr 15 09:49:26 EDT 2018


15.04.18 16:09, Nick Coghlan пише:

On 15 April 2018 at 22:50, Jeroen Demeyer <J.Demeyer at ugent.be> wrote:

I've been told that there might also be a problem with Random.randbelow, even though it doesn't cause test failures. From Raymond's description (and from an initial reading of the code), the randbelow case seems like it may be a latent defect anyway, as it wouldn't detect cases where the replacement implementation came from an extension module (e.g. if someone used Cython to compile a module that subclassed Random and overrode either Random.random or Random.getrandbits). ("Builtin" is unfortunately a bit of a misnomer in the existing type names, since extension modules also create instances of those types) In a post-PEP-575 world, I believe those checks could be replaced with the more robust "if random.func is class.random or getrandbits.func is not class.getrandbits:" (since unbound methods go away even for builtin functions, it becomes easier to check method identity against a baseline implementation).

See https://bugs.python.org/issue33144.



More information about the Python-Dev mailing list