python面向对象

面向对象

  • 理解面向对象
  • 类和对象
  • 添加和获取对象属性
  • 魔方方法

一、理解面向对象

面向对象时一种抽象化得编程思想,很多编程语言中都有得一种思想。
例如:洗衣服
思考:几种途径可以完成洗衣服
手洗和洗衣机

总结:面向对象就是将编程当成一个实物,对外界来说,事物是直接可以使用得,不用管他内部得情况。而编程就是设置事物能够做什么事。

二、类和对象

面向对象编程过程中,有两个重要组成部分:类和对象

2.1理解类和对象
2.1.1类

类是对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事物。

  • 特征是属性
  • 行为是方法
    类比如说是制造洗衣机的图纸,也即是说类是用来创造对象的。
2.1.2对象

对象是类创建出来的真实存在的事物,例如,洗衣机
注意:开发中,先有类,再有对象。

2.2面向对象实现方法

2.21定义类

python2中类分为:经典类 和新式类

  • 语法
class 类名():
    代码
    ......

注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯

  • 体验
2.2.2创建对象

对象又名实例

  • 语法
对象名=类名()
  • 体验
##定义洗衣机类,功能:洗衣服
#定义洗衣机类
"""

class类名()
    代码
"""
class Washer():
    def wash(self):
        print('能洗衣服')

#创建对象
#对象名=类名()

heier=Washer()

print(heier)
heier.wash()

2.2.3 self

self指得是调用该函数的对象。

#
class Washer():
    def wath(self):
        print('洗衣服')
        print(self)

heier=Washer()
print(heier)

heier.wath()
"""
<__main__.Washer object at 0x00000121E917AE80>
洗衣服
<__main__.Washer object at 0x00000121E917AE80>
打印对象和打印self的地址一样的

self 就是heier
"""
#
class Washer():
    def wath(self):
        print('洗衣服')
        print(self)

heier1=Washer()
print(heier1)
heier1.wath()

heier2=Washer()
print(heier2)
heier2.wath()
"""
<__main__.Washer object at 0x00000224BFDB8B70>
洗衣服
<__main__.Washer object at 0x00000224BFDB8B70>
<__main__.Washer object at 0x00000224BFDA3B70>
洗衣服
<__main__.Washer object at 0x00000224BFDA3B70>
同一个类创建多个对象,对象的地址不同
"""

三,添加和获取对象属性
属性即特征,比如:洗衣机的宽度、高度、重量。。。
对象属性既可以在类外面添加和获取,也可以在类里面添加和获取。

3.1类外面添加对象属性

  • 语法
对象名.属性名=
  • 体验
class Washer():
    def wath(self):
        print('洗衣服')
        print(self)

heier1 = Washer()
print(heier1)
heier1.wath()
heier1.high=200
heier1.width=500
3.2类外面获取对象属性
  • 语法
对象名.属性名
  • 体验
#获取属性名

print(f'洗衣机的宽度{heier1.width},{heier1.high}')
3.3类里面获取对象属性
  • 语法
self.属性名
  • 体验
class Washer():
    def wath(self):
        print('洗衣服')
        print(f'洗衣机的宽度{self.width},')
        print(f'洗衣机高度{self.high}')

heier1 = Washer()

heier1.high=200
heier1.width=500

heier1.wath()
"""
洗衣服
洗衣机的宽度500,
洗衣机高度200
"""
四、魔法方法

在python中,__ xx __()的函数叫做魔法方法,指的是具有特殊功能的函数。

4.1_init_()
4.1.1体验_init_

思考:洗衣机的高度和宽度是与生俱来的属性,可不可以在生产过程中就赋予这些属性?
答:理应如此

init()方法作用:初始化对象

class Washer():
    def __init__(self):
        self.high=200
        self.width=500
    def wath(self):

        print(f'洗衣机的宽度{self.width},')
        print(f'洗衣机高度{self.high}')

heier1 = Washer()
heier1.wath()
"""

洗衣机的宽度500,
洗衣机高度200
"""

注意:

  • init()方法,在创建一个对象时默认被调用,不需要手动调用
  • init(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。

4.1.2带参数的_init_()
思考:一个类可以创建多个对象,如何对不同的对象设置不同的初始化属性
答 传参数

class Washer():
    def __init__(self,high,width):
        self.high=high
        self.width=width
    def wath(self):

        print(f'洗衣机的宽度{self.width},')
        print(f'洗衣机高度{self.high}')

heier1 = Washer(10,20)
heier1.wath()

heier2=Washer(30,50)
heier2.wath()
"""
洗衣机的宽度20,
洗衣机高度10
洗衣机的宽度50,
洗衣机高度30
"""

4.2_str_()

在使用print输出对象的时候,默认打印对象的内存地址。如果类定义了—str—方法,那么就会打印从这个方法中return的数据。

class Washer():
    def __init__(self):
        self.high=500
    def __str__(self):
        return '解释说明,类的说明或对象状态的说明'




heier1 = Washer()
print(heier1)

"""
解释说明,类的说明或对象状态的说明
"""
4.3 --del–

但删除对象的时候,python解释器会默认调用-del-()方法

class Washer():
    def __init__(self):
        self.high=500
    def __del__(self):
        print('对象删除')


heier1 = Washer()


"""
对象删除
"""

五综合应用

5.1烤地瓜
class SweetPotato():
    def __init__(self):
        #焙烤的时间
        self.cook_time=0
        #考的状态
        self.cook_state='生的'
        #调料列表
        self.condiment =[]
    def cook(self,time):
        self.cook_time+=time
        if 0<=self.cook_time<3:
            self.cook_state='生的'
        elif 3<=self.cook_time<5:
            self.cook_state = '半生不熟'
        elif 5 <= self.cook_time < 8:
            self.cook_state = '熟了'
        elif 3 <= self.cook_time :
            self.cook_state='烤糊了'

    def add_condiments(self,condiment):
        self.condiment.append(condiment)

    def __str__(self):
        return f'这个地瓜烤了{self.cook_time},状态{self.cook_state},调料{self.condiment}'
#2
digua=SweetPotato()
print(digua)
digua.cook(2)
print(digua)
digua.add_condiments('酱油')

digua.cook(2)

digua.add_condiments('盐')
print(digua)
"""
这个地瓜烤了0,状态生的
这个地瓜烤了2,状态生的
这个地瓜烤了4,状态半生不熟

"""
"""
这个地瓜烤了0,状态生的,调料[]
这个地瓜烤了2,状态生的,调料[]
这个地瓜烤了4,状态半生不熟,调料['酱油', '盐']
"""
5.2搬家具

需求

将小于房子剩余面积的家具面积摆放到房子中

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

class Home():
    def __init__(self,address,area):
        self.address=address
        self.area=area
        self.free_area=area
        self.furniture=[]
    def __str__(self):
        return f'房子地理位置{self.address},房屋面积是{self.area},房屋剩余面积是{self.free_area},家具{self.furniture}'
    def add_furniture(self,item):
        if item.area <=self.free_area:
            self.furniture.append(item.name)
            self.free_area-=item.area
        else:
            print('家具太大')






#
bd=Furniture('双人床',6)
safa=Furniture('沙发',6)
jia=Home('北京',1000)
print(jia)

jia.add_furniture(bd)
print(jia)

jia.add_furniture(safa)
print(jia)
"""
房子地理位置北京,房屋面积是1000,房屋剩余面积是1000,家具[]
房子地理位置北京,房屋面积是1000,房屋剩余面积是994,家具['双人床']
房子地理位置北京,房屋面积是1000,房屋剩余面积是988,家具['双人床', '沙发']
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉格朗日(Lagrange)

手敲不易,谢谢各位老板,打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值