Python之面向对象编程:两个案例

这是我第一次接触面向对象编程,我跟随B站黑马程序员的Python教程,完成了几个案例,感受到了其强大的功能:太方便了!

下面是两个案例及代码

案例一:

思路:

  首先将名词提炼出来 —— 小明 —— 人类 —— 对应类名(传入姓名)

  特征 —— 体重 —— 对应一个属性

  动词 —— 跑、吃 —— 对应两个方法

代码:

class Person:
    def __init__(self,name,weight):
    self.name = name
    self.weight = weight
    
    def __str__(self):
        return "我的名字叫 %s 体重是 %.2f 公斤" % (self.name,self.weight)
    
    def run(self):
        print("%s 爱跑步,跑步锻炼身体" % self.name)
        
        self.weight -= 0.5
    
    def eat(self):
        print("%s 是吃货,吃完这顿在减肥" % self.name)
        
        self.weight += 1
        
xiaoming = Person("小明",75.0)

xiaoming.run()
xiaoming.eat()

xiaomei = Person("小美",45)

xiaomei.eat()
xiaomei.run()

print(xiaomei)
print(xiaoming)
# 小美小明之间互不影响

案例二:

 思路:

经过分析,我们需要定义两个类,一个家具,一个房子,为了开发过程不中断,我们最好选择先开发 家具类

代码:

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 __str__(self):
        
        return "户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s" 
        % (self.house_type, self_area, 
           self.free_area,self.item_list))

    def add_item(self, item):
    
        print("要添加 %s" % item)
        # 判断家具面积
        if item.area > item.free_area:
            print("%s 的面积太大,无法添加" % item.name)
            return
            
        # 添加家具名称
        self.item_list.append(item.name)
        
        # 计算剩余面积
        self.free_area -= item.area
        
# 创建家具
bed = HouseItem("席梦思",4)
chest = HouseItem("衣柜",2)
table = HouseItem("餐桌",1.5)

print(bed)
print(chest)
print(table)

# 创建房子对象
my_home = House("两室一厅",60)

my_home.add_item(bed)
my_home.add_item(chest)
my_home.add_item(table)

print(my_home)

 总结

通过这两个案例,我算是彻底体会到了面向对象的nb之处,这段代码如果用C编写不知道需要多长时间

面向对象的优势在于:

1. 利于分布执行,有条理,各个任务分工明确

2. 省了很多重复的代码

3. 对象之间可以轻松建立联系

人生苦短,我用Python,哈哈哈!

PS:另,如果想了解更多关于Linux操作系统或者python可以戳我的笔记连接:

Python和Linux操作系统笔记https://blog.csdn.net/Logos515/article/details/128196704?spm=1001.2014.3001.5501

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值