Python面向对象基础

文章目录

  • [1. 什么是面向对象](#1. 什么是面向对象)
    • [1.1 常见的编程思想](#1.1 常见的编程思想)
    • [1.2 面向过程是什么](#1.2 面向过程是什么)
    • [1.3 什么是面向对象](#1.3 什么是面向对象)
    • [1.4 封装](#1.4 封装)
    • [1.5 继承](#1.5 继承)
    • [1.6 多态](#1.6 多态)
  • [2. 面向对象的概念](#2. 面向对象的概念)
    • [2.1 两个重要概念:类和对象](#2.1 两个重要概念:类和对象)
    • [2.2 类](#2.2 类)
    • [2.3 对象](#2.3 对象)
    • [2.4 self关键字](#2.4 self关键字)
  • [3. 对象属性](#3. 对象属性)
    • [3.1 什么是属性](#3.1 什么是属性)
    • [3.2 类外面访问属性](#3.2 类外面访问属性)
    • [3.3 类内部获取属性](#3.3 类内部获取属性)

1. 什么是面向对象

1.1 常见的编程思想

编程思想就是:利用计算机来解决实际编程问题的一种思维方式。而编程思想是通用的,与计算机语言本身没有太大关系。

常见的编程思想有:

(1)面向过程

(2)面向对象
注意:Python同时支持面向过程和面向对象的编程语言!

1.2 面向过程是什么

面向过程是一种以过程为中心的编程思想。通俗地说,在解决编程问题时,我们会把需要的步骤都列出来,然后按照操作步骤写代码,这种思维就是面向过程思想。
说明:比如,要产生第一个随机数,步骤:

(1)导入random模块

(2)产生随机数

(3)输出结果

使用面向过程思维来了解:使用ATM机取钱的过程。

(1)带上银行卡,去ATM机所在的地方;
(2)排队等待;
(3)轮到自己了,把银行卡插入ATM机;
(4)输入密码,取钱;
(5)取钱成功。

1.3 什么是面向对象

面向对象是软件开发方法,一种编程范式。面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

python 复制代码
# 学生:姓名、年龄 ;工作、赚钱
# 1. 先定义
class student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def work(self):
        print("好好工作")

    def money(self):
        print(f"{self.age}岁的{self.name}在努力赚钱... ...")


# 2. 后调用
stu = student("刘向阳",23)
print(stu.name)
print(stu.age)

#调用
stu.work()
stu.money()
# 总结:
# 1. 封装后的代码执行后不能立马有效果  ==抽象
# # 2. 一切皆对象:类 ==> 对象
# # 3. 类:包含两部分: 变量、方法

通俗地说,面向对象思想就是:当解决问题的视角不再是详细的操作步骤,而是另一个视角:操作对象。比如:操作手机打电话、操作电脑看电影等。

对象可以是:手机、电脑等一切事物。

面向对象思想优势:

(1)在现实生活中,所有事物都被看作是对象;

(2)面向对象的宗旨:模拟现实世界中的一切事物;

(3)贴近实际生活,给所有对象都赋予属性和方法,更加人性化。

1.4 封装

面向对象的三大特性

(1)封装

(2)继承

(3)多态

在现实生活中,也有很多与封装的案例。

比如,小刘是一个IT公司的程序员。

小刘身边的人 了解小刘的隐私内容项
银行柜员 身份证号、联系方式、银行卡号等。
同事 姓名、职位、性别、年龄等。
爸妈 血型、身份证号、女朋友姓名、性别等。

类似的,在Python面向对象中也有封装。

简单地说,封装就是把对象的属性和方法放在一个整体中,并限制对属性和方法的访问操作。而这里说的整体,就是【类】。

class 类名:
	def 方法名():
		属性1 = 值1
		属性2 = 值2
		...
	
	def 方法名2():
		执行代码1
		执行代码2
		...

例如,在下图日常生活中常见的画面,哪些可以封装成一个类?

一切皆对象

电脑
手机
数据线
...

1.5 继承

在现实生活中,继承一般指的是子女继承父辈的财产,比如:子承父业等。

类似的,面向对象继承也有继承父类的意思。当子类继承了父类后,子类就具有父类的属性和方法。
说明:继承都满足:is-a关系。

1.6 多态

多态指的是:不同类的对象对同一消息做出不同的响应。这里的发送消息,通常是指调用方法。

通过生活案例来说明什么是多态,比如:电脑键盘上的F12功能键是固定不变的,但完成功能不同。

固定不变的F12功能键 完成功能
F12 在WPS办公软件使用时,提示用户保存文件。
F12 在Notepad++编辑软件使用时,会把工作区间进行全屏显示。
F12 在Chrome浏览器使用时,能进入到开发者模式。

2. 面向对象的概念

2.1 两个重要概念:类和对象

要掌握Python面向对象的特性,首先需要了解两个重要概念:类、对象。

我们通过公司职员-张三为例子来解释说明。

类是抽象的概念,指的是:对某些事物的描述。

对象是具体的概念,指的是:实实在在存在的个体。

2.2 类

类是抽象的概念,指的是:对某些事物的描述。简单地说,类就是一个模板。

定义Python类语法:

python 复制代码
class 类名:
    def 方法名(self):
    	代码1
    	代码2
    	...
    # 其他方法...

例如,一起来完成:

(1)定义一个学生类;

(2)让这个学生努力学习;

(3)执行程序,观察效果。

python 复制代码
class student:
    def student(self):
        print("要努力学习")
# 当仅定义了后,执行程序没有效果

2.3 对象

对象是具体的概念,指的是:实实在在存在的个体。简单的说,对象就是通过类创建出来的实体。
创建对象语法:

  • 对象名 = 类名()
    调用方法语法:
  • 对象名.方法名()

说明:不用给self参数传递参数值。

例如,一起来完成:

(1)用对象模拟制造出一台小轿车;

(2)小轿车能跑起来;

(3)执行程序,观察效果。

python 复制代码
class Car:
    def run(self):
        print("小轿车能跑起来...")

# 1.创建对象
# 对象名 = 类名()
car = Car()
# 2.调用方法
# 对象名.方法名()
car.run()   # 不需要给self传递值

2.4 self关键字

self是一个Python关键字,在面向对象中,self指向了对象本身。比如,创建了一个学生对象。

python 复制代码
# 定义类
class Student:
    pass

# 创建对象
student = Student()

例如,一起来完成:

(1)定义一个学生类,且学生在努力学习;

(2)创建一个对象,同时输出对象名、self,了解self的含义;

(3)再到学生类中,定义一个学生睡觉的行为,并分别通过对象名、self调用方法;

(4)执行程序,观察self的效果。

python 复制代码
# 1.定义学生类  输出self
class Student:
    def study(self):  # 当前的,当前的对象
        print("=======================")
        print("正在努力学习!")
        print("===============",self)
        print("=======================")

    # 睡觉
    def sleep(self):
        # 类内部调用   self = 当前的对象
        # 对象名.方法名()
        # self.方法名()
        self.study()

# 2.输出对象名
stu = Student()
print(stu)  
# 调用
stu.study()  # self = 当前的对象

3. 对象属性

3.1 什么是属性

在现实生活中,属性就表示固有特征,比如:一辆小轿车的属性有轮胎数、颜色、品牌等。

属性可以简单理解为与生俱来的特征,比如一个人的姓名、年龄、身高、体重等都是属性。

属性Python面向对象中,直接使用变量来表示。

需要注意的是,一个对象通常包含两部分方法属性

3.2 类外面访问属性

在类外面访问属性,分为:

(1)添加属性

(2)获取属性
说明:要访问对象中的属性,需要使用.来操作。

  • 添加属性的语法:
    对象名.属性名 = 值
  • 获取属性语法:
    对象名.属性名

例如,一起来完成:

(1)在车类外设置车的颜色为红色、有4个轮胎;

(2)获取属性值并输出结果。

python 复制代码
class Car:
    def run(self):
        print("汽车能跑起来...")

# 1.创建对象
car = Car()
# 2.添加属性
car.color = "红色"
car.number = 4
# 3.获取属性
print(f"颜色:{car.color}")
print(f"轮胎数:{car.number}")

3.3 类内部获取属性

在类内部获取属性语法:

self.属性

例如,一起来完成:

(1)在类外部添加2个属性:车颜色、车品牌;

(2)在类内部定义一个show()方法来获取属性值信息。

python 复制代码
class Car:
    def run(self):
        print("汽车能跑起来...")
    # 定义方法
    def show(self):
        print(f"车颜色:{self.color}")
        print(f"车的品牌:{self.brand}")
       


car = Car()
# 外部设定值
car.color = "黑色"
car.brand = "BWM"
# 内部获取值
# 调用方法
car.show()
相关推荐
古希腊掌管学习的神16 分钟前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
半盏茶香20 分钟前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
TGB-Earnest21 分钟前
【py脚本+logstash+es实现自动化检测工具】
大数据·elasticsearch·自动化
Evand J1 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab
LucianaiB1 小时前
探索CSDN博客数据:使用Python爬虫技术
开发语言·爬虫·python
Ronin3051 小时前
11.vector的介绍及模拟实现
开发语言·c++
计算机学长大白2 小时前
C中设计不允许继承的类的实现方法是什么?
c语言·开发语言
大圣数据星球2 小时前
Fluss 写入数据湖实战
大数据·设计模式·flink
suweijie7682 小时前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
PieroPc3 小时前
Python 写的 智慧记 进销存 辅助 程序 导入导出 excel 可打印
开发语言·python·excel