随机数生成类

  

import random
class RandomGenerator:
    def __init__(self,count=10,minimum=1,maximum=100):
        self.count=count
        self.min=minimum
        self.max=maximum
        self.g=self._gen()
    def _gen(self):
        while True:
            yield random.randrange(self.min,self.max)
    def gen(self,count=None):
        if count is None:
            count=self.count
        return [next(self.g) for _ in range(count)]

b=RandomGenerator()
print(b.gen(3))

 

import random
class RandomGenerator:
    def __init__(self,minimum=1,maximum=100,count=10):
        self.min=minimum
        self.max=maximum
        self.count=count
    def gen(self):
        return [random.randint(self.min,self.max) for _ in range(self.count)]
b=RandomGenerator()
print(b.gen())
print(b.gen())

 

classmethod & staticmethod

import random
class RandomGenerator:
    @classmethod
    def gen(cls,min=1,max=100,count=10):
        return [random.randint(min,max) for _ in range(count)]
    @staticmethod
    def _gen(min=1,max=100,count=10):
        return [random.randrange(min,max+1) for _ in range(count)]
print(RandomGenerator.gen())
print(RandomGenerator.gen())
print(RandomGenerator._gen())
print(RandomGenerator._gen())
print(RandomGenerator()._gen())
print(RandomGenerator()._gen())

 

添加Point类

import random
class RandomGenerator:
    def __init__(self,minimum=1,maximum=100,count=10):
        self.min=minimum
        self.max=maximum
        self.count=count
        self.g=self._gen()

    def _gen(self):
        while True:
            yield [random.randint(self.min,self.max) for _ in range(self.count)]

    def gen(self,count):
        self.count=count # 每次改变对象count属性
        return next(self.g)

b=RandomGenerator()

class Point:  # class coordinates
    def __init__(self,x,y):
        self.x=x
        self.y=y

    def __str__(self):
        return '{}=>{}'.format(self.x,self.y)

    def __repr__(self):
        return '{} : {}'.format(self.x,self.y)

lst=[Point(*v) for v in zip(b.gen(5),b.gen(5))]
print(lst)
for p in lst:
    print(p.x,':',p.y)
for p in lst:
    print(str(p))

 

posted @ 2020-10-02 23:12  ascertain  阅读(117)  评论(0编辑  收藏  举报