python--面向对象以及其三大特性(封装、继承、多态)


前言

这一节主要学习面向对象以及面向对象的三大特性:封装、继承、多态;还有高级特性:类方法、静态方法、@property类属性、单例模式(基于装饰器、基于new方法)

一、面向过程

面向过程是一种以过程为中心的编程思想:分析出解决问题所需要的步骤、然后用函数把这些步骤一一实现,使用的时候一个一个调用就可以了

面向过程的特点:
优点:性能比面向对象高、因为类在调用的时候需要实例化,开销比较大,比较消耗资源
缺点:没有面向对象易于维护、易复用、易扩展
特性:模块化、流程化

二、 面向对象

面向对象是吧构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,二十为了描述整个事务在整个解决问题的步骤中的行为

三、面向对象的三大特性

__init__方法就是将对象和属性绑定在一起
类:是创建实例的模板
对象:是一个一个具体的实例
实例化;就是用类创建对象的过程
在这里插入图片描述

一、封装

__init__方法就是将对象和属性绑定在一起
构造方法:实例化对象时自动执行的方法
self:self实质上是实例化的对象
类方法中,python解释器会自动把对象作为参数传给self

下面就是一个简单的封装

class People:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def shopping(self):
        print(f'{self.name},{self.age}岁,{self.gender},去西安赛格购物广场购物')

    def playGame(self):
        print(f'{self.name},{self.age}岁,{self.gender},在家里玩游戏')

    def learning(self):
        print(f'{self.name},{self.age}岁,{self.gender},在西部开源学习')


p1 = People('小明', '18', '男')
p2 = People('小王', '22', '男')
p3 = People('小红', '20', '女')
p1.shopping()
p2.playGame()
p3.learning()


小明,18,,去西安赛格购物广场购物
小王,22,,在家里玩游戏
小红,20,,在西部开源学习

二、继承

***继承描述的是事物之间的所属关系、当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类,扩展类;而被继承的class称为基类、父类、或者超类
***父类的方法都会继承给子类

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def learing(self):
        print(f'{self.name}正在学习')

    def choice_course(self):
        print('正在选课中'.center(50, '*'))


class MathStudent(Student):
    def choice_course(self):
        super(MathStudent,self).choice_course()
        info="""
                      课程表
            1.高等数学
            2.线性代数
            3.python程序设计语言
        """

        print(info)


m1 = MathStudent('msy', 20)
m1.learing()
m1.choice_course()

上边是一个简单的继承例子

上边就是单继承,那么有的时候也会存在多继承,而在多继承中分为经典类和新式类,不过在python3中已经全部使用新式类。两者的区别在于,经典类的多继承搜索顺序是深度优先,而新式类的搜索顺序是广度优先

私有属性和私有方法

私有属性和私有变量都是以双下划线开头,类的外部(包括子类)不能进行访问和操作,类的内部可以访问和操作

三、多态

不同的对象执行同一个方法返回不同的值
多态其实在我们之前的学习中已经涉及,比较简单,这里就不一一赘述

四、高级特性

类方法、静态方法、实例方法
在这里插入图片描述
类方法和静态方法
类方法:类方法是类对象所拥有的方法,需要用修饰器一般以@clasmethod来标识其为类方法
(1)对于类方法,第一个参数必须是类对象,作为第一个参数(cls是形参,当然也可以使用其他变量名)
(2)能够通过实例对象和类对象去访问
静态方法:静态方法需要用修饰器一般是staticmethod来标识其为静态方法
(1)静态方法不需要多定义参数
(2)能够通过实例对象和类对象去访问

property类属性
方法在调用的时候如果没有参数,我们加上括号不利于理解,所以我们可以使用property类属性帮助我们将类方法转换为类属性,这样我们在调用的时候就不用加上括号,直接调用即可
在这里插入图片描述
在这里插入图片描述

单例模式

简单来说就是一个类只能构建一个对象的设计模式
确保系统中某个对象的唯一性即一个类只能有一个实例非常重要
下边是两种实现单例模式的方法在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值