前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python语言学习:面向对象编程,类和对象,封装、继承和多态

Python语言学习:面向对象编程,类和对象,封装、继承和多态

作者头像
陆勤_数据人网
发布2022-03-29 08:35:41
5030
发布2022-03-29 08:35:41
举报

2022年第03周。 这一周Python语言学习,记录如下。

01面向对象编OOP

1.1 为什么学习和应用OOP?

  • 1 OOP适合更加复杂的需求分析和项目开发。
  • 2 OOP具有更强大的封装能力。
  • 3 OOP相比于面向过程编程(OPP),是另一种编程思维,从谁来做思考需求分析和代码设计与开发
  • 4 OOP可以提升我数据科学工作的效率。

1.2 什么是OOP?

OOP全称是(Object Oriented Programming),面向对象编程,一种编程思维和方式。 面对需求分析时,OPP会思考怎么做这个需求,而OOP会思考谁来做这个需求,并且进一步思考这个谁需要具备什么特征和行为,即这个谁的属性和方法。通过OOP,可以把这个谁的属性和方法封装在一起,做成一个类。类是一种抽象,类似建房子的图纸;对象是类的具体化或者实例化,类似按着图纸建成一栋栋房子。这个房子有什么特征和能够做什么,就取决于房子的图纸(类)的先前的设计。你会发现,面向对象编程,更接近我们的生活,更能够灵活性地表达我们的生活。

1.3 怎么学习OOP?

通过OOP的概念,我们发现,学习OOP时,我们需要学习这些内容:

  • 1 OOP是一种编程思维和方式。
  • 2 OOP的需求分析是从谁来做开始的,并且要想清楚这个谁要有什么职能。
  • 3 OOP的两个核心概念:类和对象
  • 4 OOP的三个重要特性:封装、继承和多态
  • 5 OOP的属性和方法的类型,例如实例属性和方法、类属性和方法、静态方法。
  • 6 学习和使用OOP来设计和实现负责的项目和系统。

02类和对象

2.1 概念描述

类和对象是OOP的两个核心概念。

类是抽象,不能直接使用,它是对一群具有相同特征或者行为的事物的一个统称。

  • 1 特征称为属性
  • 2 行为称为方法

对象是具体的,可以直接使用,它是类的具体存在,具有类所设计的属性和方法。

举例说明: 类相当于建房图纸,对象相当于按着建房图纸建造的一栋栋楼房。

在程序开发中,应该先有类,再有对象;应该先设计要使用的类,再设计其它类;设计类的时候遵循奥卡姆剃刀原则,即类设计的时候,不要增加没有的或者不必要的属性和方法

2.2 类设计和生成

使用关键词class来设计类。 简单示例。 需求分析,需求如下 18岁的小明喜欢跑步和读书。 20岁的小红也喜欢跑步和读书。 根据需求,我们创建一个Person类,具有姓名和年龄属性,跑步和读书方法。 参考代码如下:

代码语言:javascript
复制
# 设计Person类
class Person:

    # 创建实例属性
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 创建实例方法
    def run(self):
        print("%d岁的%s喜欢跑步" % (self.age, self.name))

    def read(self):
        print("%d岁的%s喜欢跑步" % (self.age, self.name))


# 生成小明对象
xiao_ming = Person("小明", 18)
xiao_ming.run()
xiao_ming.read()

# 生成小红对象
xiao_hong = Person("小红", 20)
xiao_hong.run()
xiao_hong.read()

结果如下。

03封装

封装是面向对象编程的一大特性。 OOP的第一步,把属性和方法封装到一个抽象类中。 外界使用类创建对象,然后用对象调用方法。 对象方法的细节被封装在类的内部。 前面的Person类就采用了封装技术。

04继承

OOP有三大特性,分别是封装、继承和多态。

  • 1 封装,根据这个谁的职能将属性和方法封装到一个抽象的类中
  • 2 继承,实现代码重用,相同的代码不需要重复编写。编写程序时,请遵循不写重复代码块的原则。
  • 3 多态,不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度,让代码可做更丰富的功能。

继承的知识点,罗列如下:

  • 子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。
  • 子类根据自己职能,封装子类特有的属性和方法。
  • 继承具有传递性。
  • 当父类的方法实现不能满足子类需求时,可以对父类方法进行重写(一种是覆盖父类的方法,另一种是对父类方法功能进行扩展,需要的位置使用super().父类方法
  • 子类对象不能直接访问父类的私有属性和方法(一种隐私保护技术),可以通过父类的公有方法间接访问。
  • 子类可以多个继承类,比方说,孩子类继承父亲和母亲类的特性和方法。多重继承的时候,避免各个类里面具有相同的方法。
  • 如果没有父类,建议统一继承自object

05多态

多态是指不同的子类对象调用相同的父类方法,会产生不同的执行结果。 多态的知识点:

  • 1 多态的好处,增加代码的灵活度
  • 2 多态的构建,以继承和重写父类方法为前提。

继承和多态的一个简单实例。 需求分析: HR需要招聘程序员和设计师,基于OOP采用继承和多态编写代码。 参考代码:

代码语言:javascript
复制
class Person(object):

    def __init__(self, name):
        self.name = name

    def work(self):
        print("%s喜欢工作" % self.name)


class Programmer(Person):
    def work(self):
        print("%s编写代码" % self.name)


class Designer(Person):
    def work(self):
        print("%s设计UI" % self.name)


class HumanResources(object):

    def __init__(self, name):
        self.name = name

    def hr_with_person(self, person):
        print("%s招聘%s" % (self.name, person.name))

        # 人才的工作职责
        person.work()


# 创建一个程序员对象
xiao_ming = Programmer("小明")
# 创建一个设计是对象
xiao_hong = Designer("小红")

# 创建一个HR对象
xiao_fang = HumanResources("小芳")
# 招聘程序员
xiao_fang.hr_with_person(xiao_ming)
# 招聘设计师
xiao_fang.hr_with_person(xiao_hong)

结果如下:

06总结

OOP是一种编程方式和思维框架,掌握和熟悉OOP,可以响应更加复杂的需求和开发更加复杂的系统。 OOP的两大核心概念是类和对象,三大特性是封装、集成和多态。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01面向对象编OOP
    • 1.1 为什么学习和应用OOP?
      • 1.2 什么是OOP?
        • 1.3 怎么学习OOP?
        • 02类和对象
          • 2.1 概念描述
            • 2.2 类设计和生成
            • 03封装
            • 04继承
            • 05多态
            • 06总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档