python如何定义类_Python class定义类,Python类的定义(入门必读)
在面向对象的程序设计过程中有两个重要概念:类(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类的定义(入门必读)相关推荐
- python爬虫高级知识点_Python爬虫知识点梳理总结,殿堂级小白入门必读
数据分析是任何技术一样.你应该学习的目标.目标就像灯塔,指引你前进.我见过很多合作伙伴学习学习,然后学会放弃.事实上,很大一部分原因是没有明确的目标,所以你必须清楚学习的目的.你准备学习爬行之前,问问 ...
- python if高级用法_Python高级用法总结--元类
type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义,而是运行时动态创建的. 比方说我们要定义一个 Hello 的 class ,就写一个hello.py 模块: class ...
- python如何设计工具类_Python基础之自定义工具类
class ListHelper: @staticmethod def find_all(target, func_condition): """ 查找列表中满足条件的所 ...
- python面向对象编程中_Python面向对象编程中关于类和方法
类和实例 python是一个面向对象的语言,而面向对象最重要的概念就是类和实例, 记得刚学习的时候不太理解这些概念,直到老师说了一句"物以类聚". 没错就是类, 归类 物以类聚 类 ...
- python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】
本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...
- Python按键精灵自动化_Python基础:了解Python与pycharm
认识 Python 人生苦短,我用 Python -- Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...
- python字符串代码对象_Python源码剖析 - Python中的字符串对象
1. 前言 我们已经在 [Python中的整数对象] 章节中对定长对象进行了详细的讲解,接下来我们将介绍变长对象,而字符串类型,则是这类对象的典型代表. 这里必须先引入一个概念: Python 中的变 ...
- python手机编译器推荐_Python编译器最新版|Python编译器手机版下载 v1.2 安卓版 - 数码资源网...
现在互联网发展迅速发展,很多人开始往it行业发展,我给你们推荐一款很好的软件,Python编译器手机版主要为Python初学者提供直接运行的功能,能够随手验证一些小程序,Python编译器app支持直 ...
- python 去掉双引号_python知识学习,python标识符和关键字
python标识符和关键字 标识符和关键字都是之中具有某种意义的标记和称谓,就像人的外号一样.所谓的标识符就是代码的分号.单引号.双引号等等就是标识符,而代码中的if.for等等就是关键字. pyth ...
- 苹果电脑python编程软件下载_Python Mac软件下载-Python for Mac(Python编程工具) v3.10.0免费版 - Mac天空...
Python for Mac是一款免费的Python编程平台,由IDLE与Python Launcher两部分组成,可以在Mac系统上使用.作为当今最受欢迎和最受欢迎的编程语言之一,Python是一种 ...
最新文章
- JSON asp(vbs)中文支持问题
- 第四范式受邀参加APEC“人工智能创新应用发展国际论坛”
- Discuz添加自定义模板广告
- 第五十一期:互联网不如国企,去BAT的程序员都是diao丝?
- 设置build.gradle打包时自动加时间
- Python数据存储:pickle模块的使用讲解(测试代码)
- MaxCompute,基于Serverless的高可用大数据服务 1
- 操作系统—内存管理的概念
- 美赛整理之Matlab的工程数学计算学习笔记(高等数学)
- python-各种tips
- 4.3 调度核心组件
- 数据结构与算法------插入排序
- Atitit.数据库表的物理存储结构原理与架构设计与实践
- Linux命令拆分csv文件,linux – 如何剪切CSV文件
- SpringBoot添加FastJson消息转换器(自用)
- 中南大学《实验室安全与环保知识》
- Java 后台 google地图通过经纬度寻找地址
- 论MongoDB索引选择的重要性
- 郭盛华:互联网安全可能是下一个热门投资主题
- 开源免费的私有聊天软件 Akaxin
热门文章
- 推荐Python十大经典练手项目,让你的Python技能点全亮!
- 腾讯推出产业版地图WeMap,“一张图”破局五大行业场景
- 用Blink打造你的技术朋友圈
- GPU 加速数据科学乘风破浪
- 告诉你一个 AtomicInteger 的惊天大秘密!
- 芯片上链,英特尔加入蚂蚁区块链生态
- 4 场直播,哈工大、亚马逊等大咖为你带来机器学习与知识图谱的内容盛宴
- LG 出售中国总部大楼;苹果延长疫情期间 Apple 设备保修期;Linux 5.6 新特性 | 极客头条...
- 一文详解 Java 的八大基本类型!
- 谁来结束 GUI 程序?| CSDN 博文精选