Python类的定义

Python 中定义一个类使用 class 关键字实现,其基本语法格式如下:class 类名:

多个(≥0)类属性...

多个(≥0)类方法...

注意,无论是类属性还是类方法,对于类来说,它们都不是必需的,可以有也可以没有。另外,Python 类中属性和方法所在的位置是任

意的,即它们之间并没有固定的前后次序。

和变量名一样,类名本质上就是一个标识符,因此我们在给类起名字时,必须让其符合 Python 的语法。有读者可能会问,用 a、b、c 作

为类的类名可以吗?从 Python 语法上讲,是完全没有问题的,但作为一名合格的程序员,我们必须还要考虑程序的可读性。

因此,在给类起名字时,最好使用能代表该类功能的单词,例如用“Student”作为学生类的类名;甚至如果必要,可以使用多个单词组

合而成,例如初学者定义的第一个类的类名可以是“TheFirstDemo”。

注意,如果由单词构成类名,建议每个单词的首字母大写,其它字母小写。

给类起好名字之后,其后要跟有冒号(:),表示告诉 Python 解释器,下面要开始设计类的内部功能了,也就是编写类属性和类方法。

其实,类属性指的就是包含在类中的变量;而类方法指的是包含类中的函数。换句话说,类属性和类方法其实分别是包含类中的变量和函

数的别称。需要注意的一点是,同属一个类的所有类属性和类方法,要保持统一的缩进格式,通常统一缩进 4 个空格。

通过上面的分析,可以得出这样一个结论,即 Python 类是由类头(class 类名)和类体(统一缩进的变量和函数)构成。例如,下面程

序定义一个 TheFirstDemo 类:class TheFirstDemo:

'''这是一个学习Python定义的第一个类'''

# 下面定义了一个类属性

add = 'http://c.biancheng.net'

# 下面定义了一个say方法

def say(self, content):

print(content)

和函数一样,我们也可以为类定义说明文档,其要放到类头之后,类体之前的位置,如上面程序中第二行的字符串,就是 TheFirstDemo

这个类的说明文档。

另外分析上面的代码可以看到,我们创建了一个名为 TheFirstDemo 的类,其包含了一个名为 add 的类属性。注意,根据定义属性位置

的不同,在各个类方法之外定义的变量称为类属性或类变量(如 add 属性),而在类方法中定义的属性称为实例属性(或实例变量),

它们的区别和用法可阅读《Python类变量和实例变量》一节。

同时,TheFirstDemo 类中还包含一个 say() 类方法,细心的读者可能已经看到,该方法包含两个参数,分别是 self 和 content。可以肯

定的是,content 参数就只是一个普通参数,没有特殊含义,但 self 比较特殊,并不是普通的参数,它的作用会在后续章节中详细介绍。

更确切地说,say() 是一个实例方法,除此之外,Python 类中还可以定义类方法和静态方法,这 3 种类方法的区别和具体用法,可阅读

《Python实例方法、静态方法和类方法》。

事实上,我们完全可以创建一个没有任何类属性和类方法的类,换句话说,Python 允许创建空类,例如:class Empty:

pass

可以看到,如果一个类没有任何类属性和类方法,那么可以直接用 pass 关键字作为类体即可。但在实际应用中,很少会创建空类,因为

空类没有任何实际意义。

python类中包含类_彻底搞懂Python中的类相关推荐

  1. python协程详解_彻底搞懂python协程-第一篇(关键词1-4)

    任何复杂的概念或系统都不是凭空出现的,我们完全可以找到它的演化历程,寻根究底终会发现,其都是在一系列并不那么复杂的简单组件上发展演化而来! by 落花僧 本文通过一系列关键概念,逐步递进理解协程. 0 ...

  2. python切片操作失败原因_彻底搞懂Python切片操作

    在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任意切取目 ...

  3. python from. import失败_彻底搞懂Python 中的 import 与 from import

    以下文章来源&作者:青南(谢乾坤) 摄影:产品经理:kingname 的第一套乐高 你好,我是谢乾坤,前网易高级数据挖掘工程师.现任微软最有价值专家(Python 方向),有6年 Python ...

  4. python一切皆对象 对象都有类_Python小世界:彻底搞懂Python一切皆对象!!!

    前言 犹记得当初学习Python的时候,对于Python一切皆对象很是懵逼,因为Python是面向对象的动态型语言,而在函数及高阶函数的应用中,如若对于一切皆对象不是有很透彻的了解,基础不是那么牢固的 ...

  5. python怎么切片提取_彻底搞懂Python切片操作

    在利用Python解决各种实际问题的过程中,经常会遇到从某个对象中抽取部分值的情况,切片操作正是专门用于完成这一操作的有力武器.理论上而言,只要条件表达式得当,可以通过单次或多次切片操作实现任意切取目 ...

  6. $.ligerdialog.open中确定按钮加事件_彻底搞懂JavaScript中的this指向问题

    JavaScript中的this是让很多开发者头疼的地方,而this关键字又是一个非常重要的语法点.毫不夸张地说,不理解它的含义,大部分开发任务都无法完成. 想要理解this,你可以先记住以下两点: ...

  7. python循环语句嵌套_2个实例搞懂Python循环嵌套——九九乘法表以及质数的索引...

    前面我们讲过了Python中的循环语句有两种:while循环和for循环.Python语言可以允许在一个循环体内嵌套另一个循环体. 比如:在while循环中可以嵌套for循环:也可以在for循环中嵌套 ...

  8. 彻底搞懂 python 中文乱码问题_彻底搞懂 Python 编码 - sylan215的软件测试技术学习 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    因为中文的特殊编码,导致 Python2 和 Python3 使用过程中的各种编码问题,如果不清楚其中的关联关系,那么这就一直是个大坑,不是懵逼就还是懵逼,所以就目前碰到的情况彻底梳理下 Python ...

  9. python中gbk字符原因报错_不想再被鄙视?那就看进来! 一文搞懂 Python 2 字符编码...

    原标题:不想再被鄙视?那就看进来! 一文搞懂 Python 2 字符编码 程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA.可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广, ...

最新文章

  1. CowNew开源团队4月14日聚会
  2. 下载银海浏览器_【教师研培】停课不停学 停课不停研 ——记银海学校全体英语教师参加市教科院“超越时空 传递智慧”第二轮教研直播活动...
  3. 背包九讲之五(二维费用的背包问题)
  4. 数据结构上机实验之顺序查找
  5. 简单地使用webpack进行打包,一些常见打包错误
  6. 很基本的权限功能小结
  7. Hive 处理 json 的几个函数
  8. 原生JS获取地址了参数
  9. C++中的内存分配new()
  10. AjaxPro.Dll运用
  11. 集成电路实践----D触发器
  12. 百度 php 图片文字识别,使用百度接口实现图片识别文字
  13. Android ApiDemos示例解析(110):Views-Data Widgets-1. Dialog
  14. ECharts+Vue实现数据可视化
  15. linux androidx86双系统,ubuntu下安装RemixOS双系统(Android x86)
  16. php 队列取并集,php多个数组并集、交集和差集操作函数总结
  17. ch341a i2c 安卓_CH341-I2C-labview-all-vision CH341A的I2C接口Labview all vision - 下载 - 搜珍网...
  18. Transformer如何用于大规模图像识别?
  19. 转-基于OpenGL的3D天空仿真
  20. 动态规划之背包问题 01背包

热门文章

  1. 旅游讲解器(tour guide)
  2. 【博学谷学习记录】超强总结,用心分享 | 产品经理内容项目的知识点回顾与梳理
  3. 海峡两岸大学生来闽 感慨传统与创新并存
  4. 使用xp主题会造成出错
  5. MySql插入百万级数据的几种方法
  6. Telerik Kendo UI 那点事【2】中文化(汉化)
  7. SystemVerilog验证 测试平台编写指南 第十一章 完整的System Verilog测试平台
  8. USBASP 插入电脑没有反应
  9. 2021HCIA-云计算题库(263题)
  10. JAVA三大平台介绍