[目录]
本节内容特别抽象,初学者阅读一遍即可,不用深究每个概念的含义。
重点是后面章节的语法知识。
当你接触的代码多了,再回过头看这篇笔记,你会有新的认知,一切都会豁然开朗。
object [ˈɒbdʒɪkt]:对象。
oriented[ˈɔːrientɪd]:导向。
programming [ˈprəʊɡræmɪŋ]:程序。
object-oriented programming
简称OOP
。
object-oriented programming
翻译为中文是面向对象程序设计即面向对象编程
。
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式。
它将程序的组织方式从传统的以函数为中心转变为以对象为中心。
在面向对象编程中,我们通过创建类来定义对象的特征和行为。
类即分类。
古语云:物以类聚,人以群分。
日常生活中,我们会习惯性的对事物进行分类。
【人类】
根据人的性别,我们将人分为男人和女人。
反过来,我们也将男人和女人统称为人类。
【车类】
按照车身类型,我们将车分为轿车、SUV、跑车、货车、客车。
反过来,我们也将轿车、SUV、跑车、货车、客车统称为车类。
【中文释义】
类是对一类事物的概括,是许多相似事物的综合。
注意这些事物各不相同,但具有一些共同的特征或行为。
【Python中的类】
在面向对象编程中,类定义了一组共同属性和方法的集合。
类可以看作是对象的模板或者蓝图,它描述了对象的特征和行为。
一个类可以创建多个对象,每个对象都具有相同的属性和方法,但是它们的具体值可能不同。
类是对一类事物的概括,是许多相似或相同事物的综合。
类里的每一个具体事物或每个单独的个体就是对象。
类是对象的模板,对象是类的实例。
从静态和动态2个方面来描述一只大雁。
【静态-从外观上来说】
根据物种分类法,雁类可以分为灰雁、白额雁、小雁、玄鹅。
这些雁的种类虽然不同,但都具备了喙、翅膀和爪等属性。
-喙
-翅膀
-爪子
【动态-从行为上来说】
雁都有觅食、飞行、睡觉等行为。
【属性】
对象的静态部分称为属性。
属性是静止的,是对象客观存在的。
例如大雁的喙,翅膀、爪子就是大雁的属性。
【方法】
对象的动态部分称为方法。
方法是动态的,是一种行为或者动作。
例如大雁的觅食、飞翔、睡觉就是大雁的方法。
【备注】
图片来源于明日科技《零基础学Python》。
下面讲两个例子来理解类与对象。
【学生类】
【车类】
Python中的最典型的类是数据类型。
不同的数据类型属于不同的类。
使用内置函数type查看数据类型:
# 1、2、3 属于整数(int)类
print(type(1))
print(type(2))
print(type(3))
# '1'、'2'、'3' 属于字符串(str)类
print(type('1'))
print(type('2'))
print(type('3'))
【终端输出】
运行上面的代码,终端显示的结果为:
、
。
class[klɑːs]:类,班级。
class 在的中文释义是类别
的意思,在Python中就代表类。
表示类别为整数即整数类。
表示类别为字符串即字符串类。
整数类
1 2 3
这些数据都属于整数(int)类,虽然值各不一样,但都有能进行加减运算的相同点。
字符串类
'1' '2' '3'
这些数据都属于字符串(str)类,虽然值各不一样,但都有能进行拼接的相同点。
假设我们正在开发一个Web应用程序,现在需要设置一个模块来管理访问网站的用户。
我们可以根据需求和功能来确定类名、对象、属性和方法。
【思路分析】
类名:创建一个名为User的类,用于表示用户。这里的用户是一个抽象的概念,是所有访问网站用户的统称,没有具体指谁。
对象:登录网站的实际用户。这里的用户是真实存在的,它有具体的用户名和登录密码。
属性:用户对象的用户名、密码、电子邮件等都可以作为用户的属性。
方法:定义几个方法实现用户相关的功能。例如注册新用户、验证用户身份、更新用户信息等。
【代码示例】
class User:
def __init__(self, username, password):
self.username = username
self.password = password
def register_user(self, username, password):
self.username = username
self.password = password
print(f"用户{username}注册成功." )
def validate_user(self, username, password):
if self.username == username and self.password == password:
print(f"恭喜{username}成功登录!")
else:
print("您输入的用户名或密码错误。")
def update_user_code(self, username, password):
if self.username == username:
self.password = password
print(f"用户{username}的登录密码为{password}!")
else:
print("无效用户名。")
# 实例化一个用户对象
user = User('张三', '1234')
# 调用注册新用户方法
user.register_user('张三', '1234')
# 调用验证用户身份方法
user.validate_user('张三', '1234')
# 调用更新用户信息方法
user.update_user_code('张三', '6666')
【终端输出】
用户张三注册成功.
恭喜张三成功登录!
用户张三的登录密码为6666!
【代码解析】
上面的代码创建了一个名为User的类,它有一个初始化方法__init__,在这个方法中,我们可以给对象的属性赋初值。
在register_user方法中,用户可以注册新用户,该方法接受两个参数:用户名和密码,将这两个参数分别赋值给self.username和self.password属性,并打印出注册成功的信息。
validate_user方法用于验证用户的身份,接受两个参数:用户名和密码,如果输入的用户名和密码与对象的属性值相匹配,则打印登录成功的信息,否则打印用户名或密码错误的信息。
update_user_code方法用于更新用户的密码,接受两个参数:用户名和新密码,如果输入的用户名与对象的属性值相匹配,则将新密码赋值给self.password属性,并打印出更新成功的信息,否则打印无效用户名的信息。
在上面代码中,首先实例化了一个用户对象user,用户名为张三
,密码为1234
。
然后依次调用了注册新用户方法、验证用户身份方法和更新用户信息方法,分别传入相应的参数。
上面的代码仅做了解,后面的章节会详细的介绍相关知识。