Python---面向对象编程(进阶篇)

知识构图:

一、前言

1.1  介绍:什么是面向对象编程?

        面向对象编程(Object-oriented programming,简称OOP)是一种编程范式,它将程序分解为对象的集合,对象之间通过相互的消息传递来完成任务。通过定义类(class)来创建对象的蓝图,面向对象编程将真实世界中的问题抽象为对象,通过定义对象的属性和行为来描述问题的解决方案。OOP的核心思想是通过封装、继承和多态,使代码更模块化、可维护、可复用。

1.2  python中为什么选择面向编程?

        在Python中使用面向对象编程的主要原因是,它可以帮助我们组织和管理代码,使其更加易于理解和维护。通过将代码组织为对象和类的形式,可以更好地模拟现实世界的问题,提高代码的可复用性和可扩展性。

二、基本概念

2.1  对象、类、实例的概念解释

        在面向对象编程中,对象是程序的基本单元,是数据和方法的封装体。类是对象的蓝图,定义了对象的结构和行为。实例是类的具体实现,是对象的具体表现。

2.1.1  对象

        对象是程序的核心,包含数据和方法。例如,一个汽车对象可以有数据如颜色、速度,以及方法如启动、停止。

2.1.2  类(相当于多个函数集合的定义)

        类是对象的模板或蓝图,定义了对象的属性和方法。例如,汽车类定义了所有汽车对象都具有的属性和方法。

 2.1.3  实例

        实例是类的具体实现,是对象的一个具体表现。例如,一辆红色的汽车是汽车类的一个实例。

2.2  面向对象编程的基本原则:封装、继承、多态

        封装:封装是一种将数据和方法包装在类中的机制,使得对象的内部细节对外部不可见。

        继承:继承是一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。

        多态:多态是一种允许同一个方法在不同类中有不同实现的机制。

三、类和对象

3.1  定义类和创建对象

        示例一:定义一个矩形类,包含两个数据成员(属性参数):宽度和高度;该类提供的两种方法(功能函数):求面积和周长

class Rectangle:  #定义一个类Rectangle
    #(1)定义初始化方法 (所有的类都有一个初始化方法)
    def __init__(self,width,height):       #第一个属性参数必须是self(类对象)
        self.width = width   #给实例属性赋予初始值(将实参传递给形参)
        self.height = height
        
    #(2)定义实例方法:
    def getArea(self):       #至少要有一个参数属性self
        S = self.width * self.height       #求面积值,赋值给S,用self . 属性访问
        return S       #返回 S 值
    
    def getPerimeter(self):
        C = 2 * (self.width + self.height)
        return C

3.2类的属性(变量)和方法 (函数)

类的属性是描述对象特征的变量,而方法是对象能够执行的操作。

        3.2.1  实例属性:在方法内部通过‘self.属性变量名’定义和访问变量(在外部通过‘对象名.实量名名访问’)
        3.2.2  类属性:在所有方法之外定义的属性(变量)

        3.2.3  方法的定义:与类相关的函数
        3.2.4  方法类型:实例方法,类方法,静态方法
        3.2.5  实例方法:至少包含一个对象参数self放在第一个;在内部通过‘self.方法()’调用(访问)在外部通过‘对象名.方法()调用(访问)’

四、封装

 4.1 封装的概念和意义

         封装是面向对象编程的一个重要原则,它将对象的状态和行为封装在一起,并限制外部对对象的直接访问。这提高了代码的安全性和可维护性。 在Python中,可以通过在属性和方法前添加双下划线`__`来实现成员的私有化。示例:

class Student:
    def __init__(self, name, age):
        self.__name = name  # 私有属性
        self.__age = age    # 私有属性

    def display_info(self):
        print(f"Student: {self.__name}, Age: {self.__age}")

        4.1.1   创建Student类的实例 

student = Student(name="张培森", age=20)

# 访问私有属性(会抛出AttributeError)
# print(student.__name)

# 通过类的公有方法访问私有属性
student.display_info()

 4.2   私有成员和公有成员

        在面向对象编程中,封装通过将对象的内部状态隐藏,提供有限的接口来访问对象,从而降低了代码的复杂性。

4.2.1  私有成员: 通过在属性和方法前添加双下划线'__',将其设置为私有成员。这样的成员只能在类的内部访问。

4.2.2  公有成员: 没有前缀或者以单下划线'_'为前缀的成员是公有成员,可以在类的外部访问。

五、类的继承、重写和多态

5.1  继承:子类继承父类的方法


5.2  重写:子类可以重写子类的方法(方法名称相同)


5.3  多态:子类方法名称相同但功能不同


5.4  示例

class Person:
    #(1)初始化方法
    def __init__(self,name,age,sex):
        self.name = name
        self.age=age
        self.sex=sex
        
    #(2)实体方法
    def study(self):
        print(self.name,'正在学习!')
        
    def show(self):
        print('姓名:{}\n年龄:{}\n性别:{}\n'.format(self.name,self.age,self.sex))
#定义一个子类student
class Student(Person):       #定义一个父类为Person的子类Student
    #(1)初始方法:
    def __init__(self,name,age,sex,major):
        super().__init__(name,age,sex)     #用super ()内置函数,继承父类的初始方法
        # self.name=name
        # self.age=age
        # self.sex=sex
        self.major=major           #添加类成员(重写)
        
    #(2)实例方法:        
    def show(self):      #方法的重写
        Person.show(self)          #用父类名 .方法的继承
        print('专业:',self.major)         #添加方法的功能
s = Student('张培森','20','男','数字科学')          #创建student对象S
s.study()            #调用父类的方法
s.show()                #调用子类的方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值