面向对象小案例总结

  • 需求:房子(House)有户型,总面积,和家具名称列表,新房子没有任何的家具,家具(HouseItem)有名字和站地面积,其中席梦思(bed)占地4平米,衣柜(chest)占地2平米,餐桌(table)占地1.5平米。将以上三件家具添加到房子中,打印房子时,要求输出:户型,总面积,剩余面积,家具名称列

class HouseItem():
    '''定义家具类,加入名字和占地面积两个静态属性'''
    def __init__(self,name,area):
        self.name=name
        self.area= area

    def __str__(self):
        return '%s占地面积: %.2f'%(self.name,self.area)

class House():
    '''定义房子的类,添加户型、总面积静态属性'''
    def __init__(self,house_type,area):
        self.house_type=house_type
        self.area=area
        # 增加剩余面积和家具列表属性
        self.free_area=area
        self.item_list=[]

    def add_area(self,item):
        # 判断剩余是否小于家具面积
        if self.free_area < item.area :
            return
        self.item_list.append(item.name)
        self.free_area -= item.area
    # 重写方法
    def __str__(self):
        return '户型:%s,总面积为: %.2f,剩余面积为:%.2f,家具有:%s' % (self.house_type,self.area,self.free_area,self.item_list)


if __name__ == '__main__':
    bed=HouseItem('席梦思',4)
    print(bed)
    chest=HouseItem('衣柜',2)
    print(chest)
    table=HouseItem('餐桌',1.5)
    print(table)

    house=House('三室两厅',120.5)
    house.add_area(bed)
    house.add_area(chest)
    house.add_area(table)
    print(house)
  • 数字时钟案例:模拟时钟滚动


# 分析:秒、分、时是动的,秒先动,分钟再动,小时在动
class NumberClock():
    '''定义这个时间的静态属性'''
    def __init__(self,hour,minute,second):
        self.hour = hour
        self.minute=minute
        self.second = second

    def run(self):
        '''定义一个执行second、minute、hour的动态方法'''
        self.second += 1
        if self.second == 60:
            self.second = 0
            self.minute += 1
            if self.minute == 60:
                self.minute = 0
                self.hour += 1
                if self.hour == 24:
                    self.hour=0

    def show(self):
        # 0>2d表示如果长度小于2在右边补0
        print(f'{self.hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d}')

if __name__ == '__main__':
    import time
    NowClock=NumberClock(19,11,30)
    # 无限循环
    while True:
        # 先展示当前的时间
        NowClock.show()
        time.sleep(1)
        # 时间向前滚动
        NowClock.run()
  • 求平面上两个点之间的距离

    
    # 求平面上两个点之间的距离
    class Point():
        def __init__(self,x,y):
            '''点坐标x,y'''
            self.x=x
            self.y=y
    
        def __str__(self):
            '''展示输入的坐标'''
            return f'横坐标:{self.x}纵坐标:{self.y}'
    
        def distance(self,p1):          # 传入另一个点对象
            '''数学公式:两点间的距离'''
            distanc=((p1.x-self.x)**2+(p1.y-self.y)**2)**0.5
            return f'{distanc:.2f}'
    
    a=Point(3,4)
    print(a)           # 打印a点坐标
    b=Point(6,8)
    print(b)            #  # 打印b点坐标
    print(a.distance(b))        # 对象调用方法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值