实用:python中类的封装

#随机整数生成类,可以指定生成的个数,可以指定数值的范围,可以调整每批生成数字的个数
class Randmon:
    def __init__(self):
        pass

    @classmethod
    def randint(cls,count:int,start:int,end:int) ->list:
        import random
        return [random.randint(start,end) for _ in range(count)]

print(1,Randmon.randint(5,1,100))

#变形:
import random

class RandomGenerator:
    def __init__(self,count=10,start=1,stop=100):
        self.count = count
        self.start = start
        self.stop = stop
        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):
        self.count = count
        return next(self.gen)


rg = RandomGenerator()
lst = rg.generate(10)
print(2,lst)

#########################################################################################################
print('='*100)

#随机生成20个数字,两两配对形成坐标系的坐标,把这些坐标组织起来,并打印出来
class Coordinate:
    def __init__(self):
        pass

    @classmethod
    def show(self,iterable:list):
        length = len(iterable)
        return [tuple(iterable[i:i+2]) for i in range(0,length,2)]

lst = Randmon.randint(20,1,100)
print(Coordinate.show(lst))

#变形:
class Point:
    def __init__(self,x:int,y:int):
        self.x = x
        self.y = y

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

lst1= [Point(x,y) for x,y in zip(rg.generate(10),rg.generate(10))]
for p in lst1:
    print(p,end='\t')
else:
    print()

#########################################################################################################
print('='*100)

#记录车的品牌mark,颜色color,价格price,速度speed等特征,并实现增加车辆信息,显示全部车辆信息的功能
class Car:
    def __init__(self,mark:str,color:str,price:int,speed:float):
        self.mark = mark
        self.color = color
        self.price = price
        self.speed = speed

    def add(self,**kwargs):
        self.__dict__.update(kwargs)

    @property
    def showall(self):
        print(self.__dict__)
bmw = Car('bmw360','white','260000','3.6')
bmw.showall
bmw.add(engine='dragon',window='full',dash='wood')
bmw.showall

#变形:
class Car:
    def __init__(self,mark:str,speed:int,color:str,price:int):
        self.mark = mark
        self.speed = speed
        self.color = color
        self.price = price

class CarInfo:
    def __init__(self):
        self.lst = []

    def addcar(self,car:Car):
        self.lst.append(car)

    def getall(self):
        return self.lst

ci = CarInfo()
car = Car('Audi_A8',400,'red',2000000)
ci.addcar(car)
print(ci.getall())
for car in ci.getall():
    print(car.mark)
    print(car.price)

#########################################################################################################
print('='*100)

#实现温度的处理
#公式如下 :
#华氏('F)转摄氏('C):5*('F-32)/9
#摄氏('C)转华氏('F):9*'C/5+32

c = 35
class ConversTemperature():
    def __init__(self):
        pass

    @classmethod
    def f2c(self,f):
        return 5*(f-32)/9

    @classmethod
    def c2f(self,c):
        return 9*c/5+32


print(ConversTemperature.c2f(c))

运行结果:

1 [66, 80, 15, 29, 65]
2 [5, 41, 70, 81, 27, 1, 12, 40, 52, 38]
====================================================================================================
[(45, 78), (1, 13), (31, 18), (11, 15), (41, 16), (82, 81), (26, 94), (70, 29), (6, 88), (97, 7)]
49:82	46:55	94:89	62:98	16:30	32:33	85:89	47:20	51:63	4:55	
====================================================================================================
{'color': 'white', 'mark': 'bmw360', 'price': '260000', 'speed': '3.6'}
{'color': 'white', 'mark': 'bmw360', 'window': 'full', 'dash': 'wood', 'price': '260000', 'speed': '3.6', 'engine': 'dragon'}
[<__main__.Car object at 0x7fb5a263ebe0>]
Audi_A8
2000000
====================================================================================================
95.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值