Python面向对象基础

1. 什么是面向对象

1.1 常见的编程思想

编程思想就是:利用计算机来解决实际编程问题的一种思维方式。而编程思想是通用的,与计算机语言本身没有太大关系。
常见的编程思想有:
(1)面向过程
(2)面向对象
注意:Python同时支持面向过程和面向对象的编程语言!
在这里插入图片描述

1.2 面向过程是什么

面向过程是一种以过程为中心的编程思想。通俗地说,在解决编程问题时,我们会把需要的步骤都列出来,然后按照操作步骤写代码,这种思维就是面向过程思想。
说明:比如,要产生第一个随机数,步骤:
(1)导入random模块
(2)产生随机数
(3)输出结果
使用面向过程思维来了解:使用ATM机取钱的过程。
在这里插入图片描述

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

1.3 什么是面向对象

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

# 学生:姓名、年龄 ;工作、赚钱
# 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类语法:

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

例如,一起来完成:

(1)定义一个学生类;

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

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

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

在这里插入图片描述

2.3 对象

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

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

说明:不用给self参数传递参数值。
例如,一起来完成:

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

(2)小轿车能跑起来;

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

class Car:
    def run(self):
        print("小轿车能跑起来...")

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

在这里插入图片描述

2.4 self关键字

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

# 定义类
class Student:
    pass

# 创建对象
student = Student()

例如,一起来完成:

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

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

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

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

# 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)获取属性值并输出结果。

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()方法来获取属性值信息。

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值