20190515类的封装练习

这篇博客探讨了类的封装,包括随机整数生成的三种方法、打印坐标、车辆信息管理以及温度(华氏、摄氏、开氏)转换的实现。通过实例展示了如何利用类来实现这些功能,如随机生成数字、组织二维坐标、管理车辆属性以及进行温度单位间的转换。
摘要由CSDN通过智能技术生成

20190515类的封装练习

1、随机整数生成类

可以先设定一批生成数字的个数,可设定指定生成的数值的范围。运行时还可以调整每批生成数字的个数

第一种思路

#第一种封装思路,比较笨重
import random
class PartNum:
    def __init__(self,minnum=0,maxnum=1,count=10):
        self._maxnum = maxnum
        self._minnum = minnum
        self._count = count

    def setminnum(self,minnum):
        self._mininum = minnum

    def setcount(self,count):
        self._count = count

    def getcount(self):
        return self._count
    #注册minnum属性get,set方法
    minnum = property(lambda self:self._minnum,setminnum)
    #注册count属性get,set方法
    count = property(getcount,setcount)

    @property
    def maxnum(self):
        return self._maxnum

    @maxnum.setter
    def maxnum(self,maxnum):
        self._maxnum = maxnum

    def partrandom(self):
        """产生随机数方法"""
        mmax = self._maxnum
        mmin = self._minnum
        return (random.randint(mmin,mmax) for _ in range(self._count))
#         return (random.randint(self._minnum,self._maxnum) for _ in range(self._count))

if __name__ == "__main__":
    parnum = PartNum()
    rom1 = parnum.partrandom()
    parnum.count = 20
    parnum.maxnum = 30
    rom2 = parnum.partrandom()
    print([_ for _ in rom1])
    print([_ for _ in rom2])

homework20190515_001

第二种封装思路

  • 生成器实现
#第二种封装思路,生成器实现
import random

class RandomGen:
    def __init__(self,start=1,stop=100,count=10):
        self.start = start
        self.stop = stop
        self.count = count
        self._gen = self._generate()
        
    def _generate(self):
        while True:
            yield random.randint(self.start,self.stop)
            
    def generate(self,count=0):
        count = count if count else self.count
        return [next(self._gen) for i in range(count)]
    
print(RandomGen().generate())

homework20190515_002

第三种思路

  • 每一次生成一批数据
# 第三种封装思路,每次生成一批数据
import random

class RandomGen:
    def __init__(self,start=1,stop=100,count=10):
        self.start = start
        self.stop = stop
        self._count = count
        self._gen = self._generate()
        
    def _generate(self):
        while True:
            yield [random.randint(self.start,self.stop) for _ in range(self._count)]
            
    def generate(self,count=0):
        return next(self._gen)
    
    @property
    def count(self):
        return self._count
    
    @count.setter
    def count(self,count):
        self._count = count
        
rand = RandomGen()
print(rand.generate())
rand.count = 5
print(rand.generate())
rand.stop = 10
rand.count = 20
print(rand.generate())

homework20190515_003

2、打印坐标

使用上题中的类,随机生成20个数字,两两配对形成二维坐标系的坐标,把这些坐标组织起来,并打印输出

import random

#定义一个生成器类
class RandomGen:
    def __init__(self,start=1,stop=100,count=10):
        self.start = start
        self.stop = stop
        self._count = count
        self._gen = self._generate()
        
    def _generate(self):
        while True:
            yield [random.randint(self.start,self.stop) for _ in range(self._count)]
            
    def generate(self,count=0):
        return next(self._gen)
    
    @property
    def count(self):
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值