Python——快速理解面向对象及三大特性

本文介绍了面向对象编程的基本概念,包括对象、类的定义及其属性和方法。重点阐述了类的使用、继承、封装和多态等三大特性,通过Python示例详细展示了如何创建对象、定义类和使用继承实现多态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一,对象概念

        面向对象是一种编程思想,它是基于面向过程的。好比在饭店吃饭,要解决的问题是吃饭,但我没有自己去买菜做饭,而是把这一系列繁琐的操作过程交给饭店的厨师,就吃厨师做好的饭就行。面向对象就是我直接调用已经存在的对象就行,不用再去重新写一遍。

二,类

        对象是一个具体的实体,而类就是抽象的模版。类中包含属性和行为。所谓属性就相当于定义变量,行为就是相当于定义函数。我们定义一个类,把所带的属性和要做的行为都写进去,想要用的时候直接创建对象调用类就行,下面用一个简单的代码展示一下:

# 1.定义类
class Person:
    # 1.1 属性赋值:weight
    def __init__(self):
        self.weight = 70

    # 1.2 定义方法: run
    def run(self):
        self.weight-=2
        print(f'跑步一次之后体重为{self.weight}')

    # 1.3 定义方法:eat
    def eat(self):
        self.weight+=1
        print(f'大吃大喝后体重为{self.weight}')
#在main函数中进行测试
if __name__ == '__main__':
    # 2.创建对象
    aosiding = Person()
    # 3.调用方法
    aosiding.run()  #结果为68
    aosiding.eat()  #结果为69
    aosiding.run()  #结果为67
    aosiding.run()  #结果为65
    aosiding.eat()  #结果为66

    其中def__init__(self)是初始化属性的时候要写的,里面的self是对象本身,类内添加属性的方式是self.属性名=属性值的方式,类外进行属性的添加的话就是对象名.属性名=属性值的方式。还有def__str__方法是打印对象时会自动调用,def__del__方法是当删除对象的时候对调用的,用来清理资源。

 三,三大特性
      三大特性分别是:继承、封装、多态。其中封装就是把属性和方法写到类里的操作,封装可以为属性和方法添加私有权限,方式是在属性前加两个下划线比如self.__属性名=属性值 
      继承指的是多个类之间的所属关系,即子类默认继承父类的属性和方法。 其中所有的类都直接或者间接继承自object类, 比如上面的代码中虽然没有写object,但默认的父类就它。继承又分为单继承和多继承,字面意思也能看出是继承父类个数的区别。下面展示多继承的代码:
# 1.定义老师类
class Teacher(object):
    # 1.1 属性
    def __init__(self):
        self.tool = '书本'

    # 1.2 方法
    def teaching(self):
        print(f'老师使用{self.tool}上课')


# 2.定义医生类
class Doctor(object):
    # 1.1 属性
    def __init__(self):
        self.tool = '手术刀'

    # 1.2 方法
    def saving(self):
        print(f'医生使用{self.tool}救人')


# 3.定义学生类
class Student(Teacher,Doctor):
    # 1.1 属性
    def __init__(self):
        self.task = '学习'
    # 1.2 方法
    def learning(self):
        print(f'学生要{self.task}')
    #1.3继承老师类
    def teacher_teaching(self):
        Teacher.__init__(self)
        Teacher.teaching(self)

    # 1.4 继承医生类
    def doctor_saving(self):
        Doctor.__init__(self)
        Doctor.saving(self)
#在main函数中测试
if __name__ == '__main__':
    #创建学生对象
    aosiding = Student()
    print(aosiding.task)         # 结果为:学习
    aosiding.learning()          # 结果为:学生要学习
    aosiding.teacher_teaching()  # 结果为:老师使用书本上课
    aosiding.doctor_saving()     # 结果为:医生使用手术刀救人

        多态指的是:多种状态。比如:同样一个函数在不同的场景下有不同的状态。多态的条件首先得有继承 (定义父类、定义子类,子类继承父类),然后就是函数重写 (子类重写父类的函数),最后是父类引用指向子类对象 (子类对象传给父类对象调用者)。请看下面代码的展示方便理解多态:


# 创建父类——妖精类,定义:妖精生存标准
class Fairy(object):
    # 定义函数,有魔法技能
    def magic(self):
        pass

    # 定义函数:会飞翔技能
    def fly(self):
        pass


# 定义S级妖精类
class Sfairy(Fairy):
    # 魔法技能
    def magic(self):
        return ('换装-天轮之铠')

    # 飞翔技能
    def fly(self):
        return ('黑羽之铠飞翔')


# 定义龙妖精类
class Dragon(Fairy:
    # 魔法技能
    def magic(self):
        return ('红莲爆炎刃')

    # 飞翔技能
    def fly(self):
        return ('哈比伙伴飞翔')


# 定义星妖精类
class Star(Fairy):
    # 魔法技能
    def magic(self):
        return ('超繁星魔法')

    # 飞翔技能
    def fly(self):
        return ('辅助飞翔')


def fairy_test(myobj:Fairy):
    print(magic())
    print(fly())


# 在main函数中完成测试
if __name__ == '__main__':
    # 创建打印机对象
    aiersa = Sfairy()
    nazi = Dragon()
    luxi = Star()
    # 具体测试结果
    fairy_test(aiersa)     # 结果为:换装-天轮之铠
                           #         黑羽之铠飞翔
    fairy_test(nazi)       # 结果为:红莲爆炎刃
                           #        哈比伙伴飞翔
    fairy_test(luxi)       # 结果为: 超繁星魔法
                           #          辅助飞翔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值