Kaydet (Commit) 886687dc authored tarafından Raymond Hettinger's avatar Raymond Hettinger

Use ABCs to validate documented restriction to Sets or Sequences.

üst 9aa53c2f
...@@ -43,6 +43,7 @@ from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil ...@@ -43,6 +43,7 @@ from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
from os import urandom as _urandom from os import urandom as _urandom
from binascii import hexlify as _hexlify from binascii import hexlify as _hexlify
import collections as _collections
__all__ = ["Random","seed","random","uniform","randint","choice","sample", __all__ = ["Random","seed","random","uniform","randint","choice","sample",
"randrange","shuffle","normalvariate","lognormvariate", "randrange","shuffle","normalvariate","lognormvariate",
...@@ -296,10 +297,10 @@ class Random(_random.Random): ...@@ -296,10 +297,10 @@ class Random(_random.Random):
# preferred since the list takes less space than the # preferred since the list takes less space than the
# set and it doesn't suffer from frequent reselections. # set and it doesn't suffer from frequent reselections.
if isinstance(population, (set, frozenset)): if isinstance(population, _collections.Set):
population = tuple(population) population = tuple(population)
if not hasattr(population, '__getitem__') or hasattr(population, 'keys'): if not isinstance(population, _collections.Sequence):
raise TypeError("Population must be a sequence or set. For dicts, use dict.keys().") raise TypeError("Population must be a sequence or Set. For dicts, use list(d).")
random = self.random random = self.random
n = len(population) n = len(population)
if not 0 <= k <= n: if not 0 <= k <= n:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment