面向对象练习题
1、随机整数生成类
可以先设定一批生成数字的个数,可设定指定生成的数值的范围。运行时还可以调整每批生成数字的个数
import random
class RandomMy: # 生成多个实例,每次调用返回一个结果
def __init__(self,start=1,end=100,count =10):
self.start =start
self.end = end
self.count = 10
def generate(self):
return [random.randint(self.start,self.end) for i in range(self.count)]
print(RandomMy().generate()) # 打印
[41, 38, 28, 31, 46, 85, 46, 54, 8, 48]
将生成数据作为一个工具使用,用户直接使用RandomGen.generate()调用即可
import random
class RandomGen: # 当成工具用,这样就会直接把类当做第一参数进行调用
@classmethod
def generate(cls,start =1,end =100,count = 10):
return [random.randint(start, end) for i in range(count)]
rand = RandomGen()
print(RandomGen.generate())
print(rand.generate())
上面的类只是满足了生成10 个数字,但是能不能使用一次返回一个数值,或者一次先生成10个数字,并且只创建一个实例呢?
import random
class RandomMy: # 生成多个实例,每次调用返回一个结果
def __init__(self,start=1,end=100,count =10):
self.start =start
self.end = end
self._count = 10
self._gen = self._generate() # 在初始化过程中将函数注入到属性字典中 # 10:45
@property # 增加外部读取和设置
def count(self):
return self._count
@count.setter # 外部设定参数
def count(self,count):
self._count= count
def _generate(self):
while True:
yield random.randint(self.star