python学习第四天

面向过程与面向对象的区别

面向过程,面面俱到,各个细节都要考虑

面向对象,只需要找到合适的助手,帮你处理问题就行

两种解决问题的思路而已

面向对象

object-oriented,简称OO,基于对象(实体)的概念创建模型,模拟客观世界分析、设计和实现软件的方法

面向对象编程

 类

类class由三个部分构成

类的名称:类名

类的属性: 一组数据

类的方法: 允许对进行操作的方法(行为)

创建对象

tom = Cat()

调用对象的方法

tom.eat()

给对象添加属性

tom.name = "汤姆"

self

多个对象,self,通过哪个对象调用方法,自动将对象的引用传过去

__init__方法

初始化对象,魔法方法

__str__方法

return打印描述信息 

全局变量和函数、对象属性和方法的区别

函数相当于把具有独立功能的封装起来  类 相当于把全局变量和函数又封装起来了

两个例子:烤红薯和装家具

class SweetPotato:
    def __init__(self):
        self.cookedString = "生的"
        self.cookedLevel = 0    
    
    def __str__(self):
        return "地瓜 状态:%s(%d)"%(self.cookedString, self.cookedLevel)
    
    def cook(self, cooked_time):
        
        self.cookedLevel += cooked_time
        if self.cookedLevel >= 0 and self.cookedLevel<3:
            self.cookedString = "生的"
        elif self.cookedLevel >= 3 and self.cookedLevel<5:
            self.cookedString = "半生不熟"
        elif self.cookedLevel >= 5 and self.cookedLevel<8:
            self.cookedString = "熟了"
        elif self.cookedLevel >= 8:
            self.cookedString = "烤糊了"
#创建一个地瓜对象
di_gua = SweetPotato()
print(di_gua)

#开始烤地瓜
di_gua.cook(1)
print(di_gua) 
di_gua.cook(1)
print(di_gua) 
di_gua.cook(1)
print(di_gua) 
class Home:
    def __init__(self,new_area,new_info,new_addr):
        self.area = new_area
        self.info = new_info
        self.addr = new_addr
        self.left_area = new_area
        self.contain_items = []
 
    def __str__(self):
        msg = "房子的面积是:%d,可用面积是:%d,户型是:%s,地址是:%s"%(self.area,self.left_area,self.info,self.addr)
        msg += "房子已有家具包括:%s"%str(self.contain_items())
        return msg
    def add_item(self, item):
        self.left_area -= item.get_area()
        self.contain_items.append(item.get_name())
class Bed:
    def __init__(self, new_name,new_area):
        self.name = new_name
        self.area = new_area
    def get_area(self):
        return self.area
    def get_name(self):
        return self.name
    def __str__(self):
        return "%s占用的面积是:%d"%(self.name, self.area)

fangzi = Home(129,"三室一厅","北京市 朝阳区 长安街 666号")
print(fangzi)

bed1 = Bed("席梦思", 4)
fangzi.add_item(bed1)
print(fangzi)
bed2 = Bed("三人床",6)
fangzi.add_item(bed2)
print(fangzi)

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-07-18 23:26  慢慢慢时光  阅读(92)  评论(0编辑  收藏  举报