【python基础学习10课_面向对象、封装、继承、多态】

一、类与对象

1、类的定义

在类的里面,称之为方法。
在类的外面,称之为函数。


类:人类,一个族群,是一个群体

类的语法规则:

class 自定义的类名():
    属性 -- 变量
    方法 -- 函数

类,首字母大写,拼接的英文不需要隔开,但是每个单词的首字母都需要大写
方法/函数,首字母小写,拼接的英文需要用下划线隔开
1)类里面定义的变量、方法,不能在类的外面引用

 2)通过实例化对象,来调用类里面的变量和函数
类名A +() 表示实例化一个对象,对象要有个定义的名字B

所以  对象B = 类名A ()  表示,对A类,示例化了一个个体对象B。

也就是对 人类,实例化了一个 对象 叫小王。小王具有人类的属性特征

对学生群体类,实例化了 一个对象,叫大学生,大学生具有学生群体类的属性和特征

实例化  就是  初始化

 

3)同一个类的对象,都是一样的基本属性
4)通过变量的重定义,来进行对象属性的修改

初始化的时候,不同的对象,属性一致。但是对象有了属性的重定义后,重定义的属性是该对象自己自定义的属性。手机刚出厂,基本设置一样,但是后面每个人都对自己的手机进行自定义,手机就不一样了,但也都是在基本属性之上的改变。

 

对象中的属性和方法都是没有相互影响的,对C对象的属性重定义,不影响B对象的

2、类的应用

1)构造方法
1、在Python中,构造方法(也称为初始化方法)是一个特殊的方法,用于在创建类的实例时初始化该实例。构造方法的语法规则如下:

构造方法的名称必须是 _ _init_ _  (前后都是双下划线,表示这是一个特殊方法)正常显示会连上,看起来是:__init__

构造方法至少需要有一个参数,通常是 self,它指向新创建的实例本身。

self 参数必须是构造方法的第一个参数。

构造方法可以有任何数量的其他参数,这些参数在创建实例时提供,用于初始化实例的属性。


2、举例:
class MyClass:
    def __init__(self, value1, value2):
        self.attribute1 = value1 
        self.attribute2 = value2

# 创建 MyClass 的一个实例,传递两个参数给构造方法
my_instance = MyClass(10, 20)


3、解析上面的例子:
class: 定义类的关键字。
MyClass: 类的名称,可以是任何有效的Python标识符。
__init__: 构造方法的名称,双下划线表示这是一个特殊方法。
self: 指向类实例的引用,在类的方法中始终作为第一个参数传递。
value1, value2: 构造方法的参数,用于接收传递给实例化时的值。
self.attribute1, self.attribute2: 实例属性,使用 self 关键字来设置实例的属性。
在创建类的实例时,Python会自动调用构造方法。构造方法的目的是为了能够定制每个实例的创建过程,为其提供初始状态。



self表示当前对象,传入进来的属性,需要赋值给当前对象的属性
 
self表示当前对象,给这个对象传入进来的属性,需要赋值给当前对象的属性

2)构造方法的应用

3、类中的属性

1)类属性的定义
实例属性:实例化的对象的属性
    定义在构造方法中的属性
        公有实例属性:常规属性
        私有实例属性:双下划线开头,只能够在自己的类中进行调用

        私有属性,是防止被随意的乱改





语法规则:
对象名称.属性名称


类的内部使用:
self.属性名称--self表示当前对象
 2)调用公共属性

属性错误:'Person'对象没有属性'self'

正确,不带self

 3)调用私有属性
3.1)在类的外面直接调用--报错

属性错误:'Person'对象没有属性'__sex'

3.2)在类的外面,通过类的方法执行在类的里面的私有属性--可以调用

在类的里面,是不区分公有和私有的属性,在类的方法里面可以直接操作类的所有属性

 

3.3)私有属性在类的外面被重定义,就不再是私有的了

重定义的属性就是该对象自己自定义的属性,属于该对象,重定义后的属性不再是原先的属性

 4、类中的方法

1)类方法的定义
方法与函数的主要区别:

1)关联:方法与特定的类实例相关联,而函数是独立的。
2)调用方式:方法通常通过对象调用,如 object.method(),而函数直接通过其名称调用,如 function()。
3)参数:方法至少有一个参数 self,它是对当前对象的引用,而函数没有这样的隐含参数。
4)作用域:方法可以访问其所属对象的属性和其他方法,而函数只能访问全局作用域和其参数中传递的值。

类里面的叫方法,类外面的叫函数。

2)调用公共方法

2)调用私有方法

私有方法不能直接调用

通过调用公共方法来调用私有方法

5、类的封装

1)封装的定义
封装:
1、设置一个方法,可以进行对私有属性的传值
2、可以把私有属性返回,让在类的外面可以操作私有属性

set和get:可以通过定义方法来访问和修改类的属性,从而提供对属性访问的更细粒度的控制。
 2)封装的实践

6、类的继承

继承:节约代码的维护量,在原有的基础上面进行迭代维护

语法规则:
class 自定义类名(父类):
    子类独有的代码块

在实例化之后,可以调用子类的方法和属性,也可以调用父类的方法和属性
 1)单继承

 1.1)想使用父类的私有属性,就得对父类进行封装。

 1.2)想使用父类的私有方法,就得在父类里增加一个调用私有方法的公共方法。

 

2)继承的传递性

子类的子类,可以调用父类的属性和方法

3)方法的重构
方法的重构,只运行自己的,不运行父级的方法

 

 4)多继承
"""
语法规则:
class 自定义类名(父类1, 父类2):
    其余的内容和之前的没什么区别
"""

4.1)两个父类,都有同名的方法--方法的重构

执行:子类(近父类,远父类)的近的父类的方法

4.2)两个父类和自己,都有同名的方法--方法的重构

自己有的重构的方法,就只执行自己的。如果自己没有这个重构的方法,谁离的近就执行谁的。

7、多态 


多态:定一个规则,按照这个规则向接口提供对应的不同的对象。然后根据提供的不同对象,去执行不同对象中的方法


传对象,调用对象里面的属性和方法

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的封装继承和多面向对象编程的三个重要概念。封装是指将数据和方法封装在一个对象中,使得对象能够对外提供统一的接口,隐藏内部的实现细节。继承是指一个类可以继承另一个类的属性和方法,以达到代码重用的目的。多是指一个对象可以根据上下文的不同而表现出不同的行为。 Python中的封装通过使用类来实现。一个类可以包含属性和方法,属性用于存储数据,方法用于处理数据。封装的好处是可以保护数据的安全性,只允许通过特定的接口来访问和修改数据。通过使用访问修饰符(如public、private和protected)可以控制属性的访问权限。 继承是通过创建一个新的类来继承现有类的属性和方法。子类默认继承父类的所有属性和方法,并且可以对继承的类进行拓展,添加新的属性和方法。继承可以提高代码的重用性和可维护性。 多是指一个对象可以根据上下文的不同而表现出不同的行为。在Python中,多没有明显的特殊语法,因为Python的函数的参数不必声明数据类型。不同的对象可以调用相同的方法,但是根据对象的类型不同,方法的实现会有所不同。这种灵活性使得代码更加可扩展和可重用。 综上所述,Python封装继承和多面向对象编程中的重要概念,它们可以帮助我们更好地组织和管理代码,提高代码的可维护性和可重用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【初学者必备】python封装继承笔记](https://download.csdn.net/download/qq_24067389/10476443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python 封装继承、多](https://blog.csdn.net/qq_49873907/article/details/130069640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [python面向对象:封装继承、多](https://blog.csdn.net/weixin_44740756/article/details/117304944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值