首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python编程技巧 – 对象和类

  • 25-03-02 14:02
  • 2303
  • 13865
blog.csdn.net

Python编程技巧 – 对象和类

Python Programming Skills – Object and Class

Python是一种面向对象的高级程序语言。

本文简要介绍用Python如何实现面向对象,对象和类的声明及使用,以及面向对象的特征,及其如何使用属性和方法的介绍;并且,继承将是重用类和对象的不错选择。

0. 面向对象

在接触面向对象编程之前,人们在生活中几乎无处不在地和对象接触;只不过,人们心中并不知道什么是对象,没有将自然界的物体和对象关联起来。

1) 自然界的对象

对象就是可以被感知、触摸的实体。在自然界里,首先看到的就是田野,山川,河流,房屋,人们等,这些都是原始对象。

每个IT人员用的电脑、配件,每个家庭的房间及家具,每个社区的体育设施,以及每条道路的标志、围栏和交通灯等等,也都是对象。

2) 软件开发的对象

编程或者软件开发过程中的对象定义没有实质的差异;尽管软件的对象不可触摸,但在程序流程和逻辑方面,却实在在地担任着重要角色。

这些对象,往往跟数据打交道,它们是数据与相关行为的集合。

3) 面向对象

Python作为编程语言,它在被开发的初期,就已经被设计有对象的特征,因此,它可以用面向对象的编程方法来解决很多实际问题。

所谓 面向 就是指向的意思,因此,面向对象其实就是功能性地指向对象,即通过数据和行为,来描述一系列相互作用的对象。

经历了面向对象的分析、设计和编程,也就对其流程有了闭环的操作。这就是面向对象程序设计的过程。

1. 对象和类

既然对象是数据和行为的集合,那么,如何定义和区分不同对象的类型呢?

人们用肉眼一秒钟就能分辨出苹果(Apple)和橘子(Orange)的区别,是因为他们的外形(shape),颜色(color)都不同。因此,除了这两个对象的名称不一样,它们的自身属性也不一样;此外,还有气味(smell)和味道(taste)的属性也不一样。

所以,定义这两个对象到编程语言,最初就有了基本概念,可以以名称(对象名)和特征(属性)来区分。

仔细想想,前面提到苹果和橘子是一个大的门类。具体到哪个苹果,或者哪个橘子,它们又会有着细节的差异,这就引入了类和对象的概念。

苹果这一大类Apple,就是一个编程所用的类(class), 而具体的哪个苹果,例如:这个苹果(theApple)就是一个对象,因为它从一个种类具体化到一个物体了;同时,这个实际的对象theApple也具有自己的属性。

由此可以引申出,类其实是对象的蓝本(blueprint), 而对象则是一个个具体的实例;一个类可以有很多个对象。

2. Python对象

1) 创建Python类

类似Apple的例子,苹果可以被定义为一个类,在Python语言里,可能编写的最简单的类的代码如下:

class Apple:
	pass
  • 1
  • 2

类的定义,以class关键字开始,接着是类的名称(由用户自己命名),最后以冒号结束这个语句;类里面的代码可能有很多种,但还不确定,因此,用pass代替。

Python的代码块不用大括号{ }分隔,因此在下一句必须缩进到合适的位置(实际编程语句开头可以有2个或者4个空格,这都能被解释器接受)

2) 类的实例化

既然创建了类,那么如何变成具体的对象呢?这需要类的实例化;也就是将类具体到一个实际的对象;创建类的实例,需要在类名称后加一对括号( )来进行,这就说明产生了一个新的实例,也就是一个新的对象。

Apple()
  • 1

类的实例输出,也就等同于对象的输出;这需要将实例赋给一个变量A,从而打印输出,

A = Apple()
print(A)
  • 1
  • 2

由于苹果有天生的特性(即属性),因此,我们将属性添加到类,再打印输出属性,看有什么效果。代码如下:

class Apple:
    color = 'red'    
    smell = 'well'
    taste = 'sweet'
print("Type of Apple is", Apple)
print("The Apple smells", Apple().smell)
print("And the Apple tastes", Apple().taste)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

运行结果如下图:
在这里插入图片描述
运行成功!

尽管该类也定义了color这个颜色属性而并没有引用,但是这并不妨碍这个类具有了鲜明的面向对象的特征。

以上代码块中,print函数打印输出Apple对象的类别class; 之后依次输出该对象实例的smell, taste(Apple类中定义的)属性值。

3. 添加属性

当我们创建了一个基本类后,但是没有什么实际用途;它看起来既没有任何数据,也不能做什么事,这时候就需要给它添加属性。

添加属性的方法,是通过点标记法,在对象(类的实例)后面设定属性。

如下示例,创建一个点坐标类(Point),然后给它添加属性,即坐标x, 坐标y.

class Point:
    pass
p1 = Point()
p2 = Point()

p1.x = 5
p1.y = 4

p2.x = 3
p2.y = 6

print(p1.x, p1.y)
print(p2.x, p2.y)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

执行结果如下图所示:
在这里插入图片描述
以上代码创建了空的Point类,没有数据和行为;然后创建了两个实例p1, p2, 并给它们赋值x, y, 即确定其二维坐标中的点的定位。

其中,p1.x, p1.y, p2.x, p2.y都采用了点标记法,就是用对象(也就是实例)加点再加属性来标记,将特定的值赋给它们,使得这些属性值具有实际意义。

当然,这些被赋予的值,可以是Python的基本类型、内置数据类型或者其它的对象,甚至可以是一个函数或另一个类。它的用途很广泛。

4. 添加方法

一个类,除了具有相应的属性外,还有一些可用的方法。添加有效的方法,可以使类和对象实例的使用,变得有趣和轻松;同时,也保证了属性相对安全,不至于直接被访问。

如同下面的例子,类Student要定义学生类,然后用def关键字添加它的方法(函数),就是studyCourse,用来表示学习课程;要传递一个参数c作为具体课程给该方法(或者函数),传递的方法是用input函数输入字符串。

示例代码如下:

class Student:
   def studyCourse(c):
       c = input("Enter the course: ")
       return f"Hi, student! You are studying {c}."
   
student1 = Student()
print(student1.studyCourse())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

等类和方法完成后,创建一个Student类的实例,就是student1, 最后用student1这个实例,使用点标记法调用studyCourse()方法,完成这次输入输出课程的任务。

执行结果如下图所示:
在这里插入图片描述

5. 继承

类创建完毕后,可以生成无限个对象实例,只要用户愿意。

但是,如果有新的特性产生,需要创建类似的对象实例,又不想重新开始,该怎么办呢?- 创建该类的子类,来继承它,是一种不错的选择。

例如,通过Student类创建小学生类Pupil,此时,Pupil类继承了Student类。

class Student:   
   def studyCourse(n):
       c = input("Enter the course: ")
       return f"Hi, student! You are studying {c}."

class Pupil(Student):
    pass

student1 = Student()
print(student1.studyCourse())

pupil1 = Pupil()
print(pupil1.studyCourse())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

执行结果如下图所示:
在这里插入图片描述
从上面的例子不难看出,Pupil继承其父类Student,只需要在参数括号里添加父类的名称即可,即便类代码块没有任何内容,只有一行pass; 它也可以通过Pupil的对象实例,来调用所继承Student的类的对象的方法studyCourse(), 打印输出课程。

看起来轻而易举!

6. 小结

以上对Python类和对象的产生做了初步介绍,并展示了添加属性、方法的实例;最后,告诉大家,Python类还能够继承,从而发挥其父类的功能,去使用而不必重写相应的方法。

关于Python,还有相当多的话题,这里暂时告一段落。

技术好文不断推出,敬请关注。

喜欢就点赞哈。?

相关阅读:

  1. Python编程技巧 - 转换二进制、十六机制和八进制的函数
  2. Python编程技巧 - 函数入门
  3. 安装最新版Visual Studio Code来开发Python应用程序
  4. 2023最新版Python 3.12.0安装使用指南
  5. Python编程技巧 - 使用列表(List)
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树基础语法类374449 人正在系统学习中
注:本文转载自blog.csdn.net的Jackson@ML的文章"https://jackson.blog.csdn.net/article/details/134480885"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top