Python 类与对象

面向对象编程三要素:封装、继承、多态。

类与对象

万事万物都可以用类描述。

  • 定义一个类
class Cat:				#大驼峰命名
	#初始化对象			#方便快速定义新对象属性的功能
	def__init__(self,new_name,new_age):
		self.name = new_name
		self.age = new_age
		
	def__str__(self):	#方便print输出对象属性的功能
		return '%s的年龄是:%d'%(self.name,self.age)
		
	#功能区
	def eat(self):
		print('猫在吃鱼')
	
	def drink(self):
		print('猫在喝水')

	def introduce(self):
		print('%s的年龄是:%d'%(self.name,self.age))
						#self 确保了多个对象的重复使用性
  • 创建一个对象
#创建一个对象
Tom = Cat()

#调用对象功能
Tom.eat()
Tom.drink()

#给Tom指向的类添加 2个属性(不常用)
Tom.name = '汤姆'
Tom.age = 40

#调用新功能
Tom.introduce()

>>>汤姆的年龄是:40
  • 创建第二个对象
lanmao = Cat('蓝猫',10)		#__init__对号入组添加属性
print(lanmao)				#__str__功能方便报告属性

>>>蓝猫的年龄是:10
综合运用——烤地瓜
class SweetPotato:

    def __init__(self):
        self.cookedString = '生的'           
        self.cookedLevel = 0				#相当于全局变量的属性
        self.Condiments = []                #列表属性可以储存数据

    def __str__(self):                      #方便print输出
        return '地瓜 状态:%s(%d),添加的佐料有%s'%(self.cookedString,self.cookedLevel,self.Condiments)

    def cook(self,cooked_time):
        
        self.cookedLevel += cooked_time		#累计cook时间

        if self.cookedLevel >= 0 and self.cookedLevel<3:
            self.cookedString = '生的'
        elif self.cookedLevel >=5 and self.cookedLevel<5:
            self.cookedString = '半生不熟'
        elif self.cookedLevel >=5 and self.cookedLevel<8:
            self.cookedString = '熟惹'
        elif self.cookedLevel > 8:
            self.cookedString = '烤糊了'

    def addCondiments(self,item):			#添加佐料功能
        self.Condiments.append(item)



#创建了一个地瓜对象
di_gua = SweetPotato()
print(di_gua)

#开始烤地瓜
i = 1
while i<=10:
    i+=1
    di_gua.cook(1)
    print(di_gua)
    if i==2:
        di_gua.addCondiments('盐')
    elif i==4:
        di_gua.addCondiments('孜然')
    elif i==8:
        di_gua.addCondiments('蒜蓉')
>>>
地瓜 状态:生的(0),添加的佐料有[]
地瓜 状态:生的(1),添加的佐料有[]
地瓜 状态:生的(2),添加的佐料有['盐']
地瓜 状态:生的(3),添加的佐料有['盐']
地瓜 状态:生的(4),添加的佐料有['盐', '孜然']
地瓜 状态:熟惹(5),添加的佐料有['盐', '孜然']
地瓜 状态:熟惹(6),添加的佐料有['盐', '孜然']
地瓜 状态:熟惹(7),添加的佐料有['盐', '孜然']
地瓜 状态:熟惹(8),添加的佐料有['盐', '孜然', '蒜蓉']
地瓜 状态:烤糊了(9),添加的佐料有['盐', '孜然', '蒜蓉']
地瓜 状态:烤糊了(10),添加的佐料有['盐', '孜然', '蒜蓉']
综合运用——房子与家具
class Home:
    def __init__(self,area,info,addr):
        self.area = area
        self.info = info
        self.addr = addr
        self.leftarea = area            #剩余面积与内含物品都是房子的属性。
        self.content = []

        
    def __str__(self):
        msg = '房子的面积是:%d,可用面积是:%d,户型是:%s\n地址是:%s。'%(self.area,self.leftarea,self.info,self.addr)
        if len(self.content) != 0:  
                msg += '当前房屋里含有物品%s\n'%(str(self.content))
        return msg
    
    def add_item(self,item):
        self.leftarea -= item.area
        self.content.append(item.name)



class Bed:
    def __init__(self,area,name):
        self.name = name
        self.area = area

    def __str__(self):
        return'床的品牌是:%s,大小是:%d。'%(self.name,self.area)



house = Home(120,'三室一厅','北京市 朝阳区 长安街 666号')
print(house)

bed1 = Bed(3,'席梦思')
print(bed1,end='')
bed2 = Bed(2,'小米')
print(bed2,end='')
bed3 = Bed(4,'京东')
print(bed3)
print('\n')
house.add_item(bed1)
print(house) 
house.add_item(bed2)
print(house) 
house.add_item(bed3)
print(house)    

>>>
房子的面积是:120,可用面积是:120,户型是:三室一厅
地址是:北京市 朝阳区 长安街 666号。
床的品牌是:席梦思,大小是:3。床的品牌是:小米,大小是:2。床的品牌是:京东,大小是:4。


房子的面积是:120,可用面积是:117,户型是:三室一厅
地址是:北京市 朝阳区 长安街 666号。当前房屋里含有物品['席梦思']

房子的面积是:120,可用面积是:115,户型是:三室一厅
地址是:北京市 朝阳区 长安街 666号。当前房屋里含有物品['席梦思', '小米']

房子的面积是:120,可用面积是:111,户型是:三室一厅
地址是:北京市 朝阳区 长安街 666号。当前房屋里含有物品['席梦思', '小米', '京东']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值