在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念;对象才是一个具体存在的实体。从这个意义上看,日常所说的人,其实都是人的对象,而不是人类。

Python 定义类的简单语法如下:

class 类名:

执行语句...

零个到多个类变量...

零个到多个方法...

类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求:如果从程序的可读性方面来看,Python 的类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。

从上面定义来看,Python 的类定义有点像函数定义,都是以冒号(:)作为类体的开始,以统一缩进的部分作为类体的。区别只是函数定义使用 def 关键字,而类定义则使用 class 关键字。

Python 的类定义由类头(指 class 关键字和类名部分)和统一缩进的类体构成,在类体中最主要的两个成员就是类变量和方法。如果不为类定义任何类变量和方法,那么这个类就相当于一个空类,如果空类不需要其他可执行语句,则可使用 pass 语句作为占位符。例如,如下类定义是允许的:

class Empty:

pass

通常来说,空类没有太大的实际意义。

类中各成员之间的定义顺序没有任何影响,各成员之间可以相互调用。

Python 类所包含的最重要的两个成员就是变量和方法,其中类变量属于类本身,用于定义该类本身所包含的状态数据:而实例变量则属于该类的对象,用于定义对象所包含的状态数据:方法则用于定义该类的对象的行为或功能实现。

Python 是一门动态语言,因此它的类所包含的类变量可以动态增加或删除(程序在类体中为新变量赋值就是增加类变量),程序也可在任何地方为已有的类增加变量;程序可通过 del 语句删除己有类的类变量。

类似的是,Python 对象的实例变量也可以动态增加或删除(只要对新实例变量赋值就是增加实例变量),因此程序可以在任何地方为己有的对象增加实例变量;程序可通过 del 语句删除已有对象的实例变量。

在类中定义的方法默认是实例方法,定义实例方法的方法与定义函数的方法基本相同,只是实例方法的第一个参数会被绑定到方法的调用者(该类的实例),因此实例方法至少应该定义一个参数,该参数通常会被命名为 self。

注意:实例方法的第一个参数并不一定要叫 self,其实完全可以叫任意参数名,只是约定俗成地把该参数命名为 self,这样具有最好的可读性。

在实例方法中有一个特别的方法:__init__,这个方法被称为构造方法。构造方法用于构造该类的对象,Python 通过调用构造方法返回该类的对象(无须使用 new)。

Python 中很多这种以双下划线开头、双下划线结尾的方法,都具有特殊的意义,本教程后面还会详细介绍这些特殊的方法。

构造方法是一个类创建对象的根本途径,因此 Python 还提供了一个功能:如果开发者没有为该类定义任何构造方法,那么 Python 会自动为该类定义一个只包含一个 self 参数的默认的构造方法。

下面程序将定义一个 Person 类:

class Person :

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

# 下面定义了一个类变量

hair = 'black'

def __init__(self, name = 'Charlie', age=8):

# 下面为Person对象增加2个实例变量

self.name = name

self.age = age

# 下面定义了一个say方法

def say(self, content):

print(content)

上面的 Person 类代码定义了一个构造方法,该构造方法只是方法名比较特殊:__init__,该方法的第一个参数同样是 self,被绑定到构造方法初始化的对象。

与函数类似的是,Python 也允许为类定义说明文档,该文档同样被放在类声明之后、类体之前,如上面程序中第二行的字符串所示。

在定义类之后,接下来即可使用该类了。Python 的类大致有如下作用:

定义变量;

创建对象;

派生子类;

下面章节开始介绍如何使用类来定义变量和创建对象。

python如何定义类_Python class定义类,Python类的定义(入门必读)相关推荐

  1. python爬虫高级知识点_Python爬虫知识点梳理总结,殿堂级小白入门必读

    数据分析是任何技术一样.你应该学习的目标.目标就像灯塔,指引你前进.我见过很多合作伙伴学习学习,然后学会放弃.事实上,很大一部分原因是没有明确的目标,所以你必须清楚学习的目的.你准备学习爬行之前,问问 ...

  2. python if高级用法_Python高级用法总结--元类

    type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义,而是运行时动态创建的. 比方说我们要定义一个 Hello 的 class ,就写一个hello.py 模块: class ...

  3. python如何设计工具类_Python基础之自定义工具类

    class ListHelper: @staticmethod def find_all(target, func_condition): """ 查找列表中满足条件的所 ...

  4. python面向对象编程中_Python面向对象编程中关于类和方法

    类和实例 python是一个面向对象的语言,而面向对象最重要的概念就是类和实例, 记得刚学习的时候不太理解这些概念,直到老师说了一句"物以类聚". 没错就是类, 归类 物以类聚 类 ...

  5. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

  6. Python按键精灵自动化_Python基础:了解Python与pycharm

    认识 Python 人生苦短,我用 Python -- Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...

  7. python字符串代码对象_Python源码剖析 - Python中的字符串对象

    1. 前言 我们已经在 [Python中的整数对象] 章节中对定长对象进行了详细的讲解,接下来我们将介绍变长对象,而字符串类型,则是这类对象的典型代表. 这里必须先引入一个概念: Python 中的变 ...

  8. python手机编译器推荐_Python编译器最新版|Python编译器手机版下载 v1.2 安卓版 - 数码资源网...

    现在互联网发展迅速发展,很多人开始往it行业发展,我给你们推荐一款很好的软件,Python编译器手机版主要为Python初学者提供直接运行的功能,能够随手验证一些小程序,Python编译器app支持直 ...

  9. python 去掉双引号_python知识学习,python标识符和关键字

    python标识符和关键字 标识符和关键字都是之中具有某种意义的标记和称谓,就像人的外号一样.所谓的标识符就是代码的分号.单引号.双引号等等就是标识符,而代码中的if.for等等就是关键字. pyth ...

  10. 苹果电脑python编程软件下载_Python Mac软件下载-Python for Mac(Python编程工具) v3.10.0免费版 - Mac天空...

    Python for Mac是一款免费的Python编程平台,由IDLE与Python Launcher两部分组成,可以在Mac系统上使用.作为当今最受欢迎和最受欢迎的编程语言之一,Python是一种 ...

最新文章

  1. JSON asp(vbs)中文支持问题
  2. 第四范式受邀参加APEC“人工智能创新应用发展国际论坛”
  3. Discuz添加自定义模板广告
  4. 第五十一期:互联网不如国企,去BAT的程序员都是diao丝?
  5. 设置build.gradle打包时自动加时间
  6. Python数据存储:pickle模块的使用讲解(测试代码)
  7. MaxCompute,基于Serverless的高可用大数据服务 1
  8. 操作系统—内存管理的概念
  9. 美赛整理之Matlab的工程数学计算学习笔记(高等数学)
  10. python-各种tips
  11. 4.3 调度核心组件
  12. 数据结构与算法------插入排序
  13. Atitit.数据库表的物理存储结构原理与架构设计与实践
  14. Linux命令拆分csv文件,linux – 如何剪切CSV文件
  15. SpringBoot添加FastJson消息转换器(自用)
  16. 中南大学《实验室安全与环保知识》
  17. Java 后台 google地图通过经纬度寻找地址
  18. 论MongoDB索引选择的重要性
  19. 郭盛华:互联网安全可能是下一个热门投资主题
  20. 开源免费的私有聊天软件 Akaxin

热门文章

  1. 推荐Python十大经典练手项目,让你的Python技能点全亮!
  2. 腾讯推出产业版地图WeMap,“一张图”破局五大行业场景
  3. 用Blink打造你的技术朋友圈
  4. GPU 加速数据科学乘风破浪
  5. 告诉你一个 AtomicInteger 的惊天大秘密!
  6. 芯片上链,英特尔加入蚂蚁区块链生态
  7. 4 场直播,哈工大、亚马逊等大咖为你带来机器学习与知识图谱的内容盛宴
  8. LG 出售中国总部大楼;苹果延长疫情期间 Apple 设备保修期;Linux 5.6 新特性 | 极客头条...
  9. 一文详解 Java 的八大基本类型!
  10. 谁来结束 GUI 程序?| CSDN 博文精选