Python —— 第四部分 面向对象程序设计

2023-11-15

4.1 基本概念

面向对象程序设计(Object Oriented Programming,OOP)

  1. 针对大型软件设计而提出
  2. 使得软件设计更加灵活
  3. 能够更好地支持代码复用和设计复用
  4. 使得代码具有更好的可读性和拓展性

基本原则:计算机程序由多个能够起到子程序作用的单元或对象组合而成。

创建类时用变量形式表示的对象属性称为数据成员或成员属性,用函数形式表示的对象行为称为成员函数或成员方法
成员属性和成员方法统称为类的成员。

4.2 类的定义与使用

python 使用 class 关键字来定义类,约定类名首字母大写(若类名由多个单词拼接而成,各单词首字母也大写)
e.g.

class Car:
    def infor(self):
        print("This is a car")

实例化对象:

>>> car = Car()
>>> car.infor()
This is a car

python内置了方法 isinstance() 来测试一个对象是否为某个类的实例:

>>> isinstance(car, Car)
True
>>> isinstance(car, str)
False

占位符 pass 可以在没有确定如何实现功能、或为以后的软件升级预留空间时使用。

4.3 self 参数

类的所有实例方法都必须至少有一个名为 self 的参数,并且必须是方法的第一个形参(如果有多个形参),self 参数代表对象本身。

方法__init__()是一个特殊的方法,每当根据某个类创建新实例时,python 都会自动运行它。

注:在类中定义实例方法时将第一个参数定义为 self 只是一个习惯。

class A:
    def __init__(self, v):
        self.value = v
    def show(self):
        print('value=', self.value)

等价于

class A:
    def __init__(hahaha, v):
        hahaha.value = v
    def show(hahaha):
        print('value=', hahaha.value)

二者运行结果:

>>> a = A(3)
>>> a.value		#访问属性
3
>>> a.show()	#调用方法
value= 3
4.4 类成员与实例成员

实例属性:一般是指在构造函数__init__()中定义的,定义和使用必须以self为前缀。
在主程序(或类的外部),实例属性属于实例(对象),只能通过对象名访问。

类属性:是在类中所有方法之外定义的数据成员。
类属性属于类,可以通过类名或对象名访问。
类中的每个属性都必须由初始值,哪怕这个只是0或空字符串。

class Car:
    price = 100000
    def __init__(self, c):
        self.color = c

创建多个实例:

>>> car1 = Car("Red")# 实例化对象car1
>>> car2 = Car("Blue")# 实例化对象car2
>>> print(car1.color, Car.price)# 通过“ 对象名.成员 ”访问类中的数据成员或成员方法
								# 通过“ 类名.类属性 ”访问类属性
Red 100000
>>> Car.price = 110000			# 修改类属性
>>> Car.name = 'QQ'				# 增加类属性
>>> car1.color = "Yellow"		# 修改实例属性
>>> print(car2.color, Car.price, Car.name)
Blue 110000 QQ
>>> print(car1.color, Car.price, Car.name)
Yellow 110000 QQ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python —— 第四部分 面向对象程序设计 的相关文章

  • python基础案例练习一

    员工管理系统练习 1 显示系统菜单 2 获得用户输入的菜单 3 根据用户的输入判断执行操作 存储员工信息 employee def show menu print 20 员工管理系统菜单 20 print 1 添加员工信息 print 2
  • python的with关键字

    前言 with表达式其实是try finally的简写形式 但是又不是全相同 格式 格式 with context as var pass 其中的context是一个表达式 返回的是一个对象 var用来保存context表达式返回的对象 可
  • 自学Python爬虫学到什么程度?就可以去找工作了?

    确立目标 了解需求 首先我们要先定位自己的目标 当然我们先以爬虫工程师来做个说明 去招聘网上看看需求都有哪些 直接做个拉勾网爬虫 结果了 仔细看看 我们可以得出以下几点 1 python 不是唯一可以做爬虫的 很多语言都可以 尤其是 jav
  • 使用Python实现K均值聚类算法

    使用Python实现K均值聚类算法 K均值聚类算法是一种经典的无监督学习算法 它将数据集分为K个簇 每个簇中的数据点与同一簇中心点的距离最小 不同簇的数据点之间的距离较大 该算法常用于数据挖掘 图像处理等领域 以下是其优缺点和Python实
  • Python画图之浪漫樱花

    import turtle as T import random import time 画樱花的躯干 60 t def Tree branch t time sleep 0 0005 if branch gt 3 if 8 lt bran
  • 《零基础入门学习python》学习过程(四)

    学习时间 2017 09 19 第14课 元组 知识点汇总 元组和列表最本质的区别就是元组是封闭的列表 它一旦定义就不可修改 不可插入或删除任意一个元素等操作 创建和访问一个元组 gt gt gt tuple2 创建一个空元组 gt gt
  • 苏宁图书爬虫第一版

    最近一直在忙于工作 当我知道这些都是借口 毕竟某些博主大佬深夜还在更新订阅号更新微博 或许这就是自制力的差距吧 不啰嗦了 今天要写的主要是一篇关于如何爬取 苏宁图书 当然只是半成品 但是大部分问题都已经解决 在这里记录一下发生过的问题 以免
  • Python的PyYAML模块详解

    文章目录 简介 安装 简单安装 从源码安装 最常被问到的问题 使用详解 加载YAML 转储YAML 构造 表示和解析 YAML语法 文档 块序列 块映射 流集合 标量 别名 标签 YAML标签和Python3 对象 字符串转换 名称和模块
  • Python学习-----起步1(Python的下载,脚本与交互模式,注释)

    目录 Python的下载 解释器 IDLE进入Python解释器 交互模式 脚本模式 注释 单行注释 多行注释 Python的下载 解释器 百度网盘链接 https pan baidu com s 1WEmOAGGHtHc1fxZzNGKu
  • python练习题3

    1 数列翻转 reverse 问题描述 编写程序对列表中的数据进行翻转转换 即将数组中第一个数和最后一个数交换 第二个数和倒数第二个数交换 依此类推 样例输入 4 100 200 300 400 样例输出 400 300 200 100 a
  • Python学习笔记之os.walk()函数

    我们使用os listdir 函数来列出目录下的所有文件和目录放入一个列表进行返回 但是listdir 函数不可对目录的子目录进行扫描 print os listdir 输出 boot dev home proc run sys etc r
  • Python 文件操作(IO)

    文章目录 前言 一 打印到屏幕 print 二 读取键盘输入 1 raw input 2 input 三 读写文件 读文件 写文件 前言 和其它编程语言一样 Python 也具有操作文件 I O 的能力 比如打开文件 读取和追加数据 插入和
  • Python中if __name__ == '__main__'的使用方法

    转 如何简单地理解Python中的if name main 2017年09月09日 22 35 42 Locutus 阅读数 219985 1 摘要 通俗的理解 name main 假如你叫小明 py 在朋友眼中 你是小明 name 小明
  • Python的学习过程中not enough values to unpack (expected 2, got 1)解决方案

    这是一篇在自学过程中debug的笔记 愿我们一同进步 问题描述 跟着小甲鱼一起学习Python 在学习到 文件 的时候有一个代码任务 内容是根据两个人物之间的三段对话对话进行分割提取操作 运行时报错 主要报错为not enough valu
  • pandas数据判断是否为NaN值的方式

    实际项目中有这样的需求 将某一列的值 映射成类别型的数据 这个时候 需要我们将范围等频切分 或者等距切分 具体的做法可以先看某一些特征的具体分布情况 然后我们选择合适的阈值进行分割 def age map x if x lt 26 retu
  • python3 隐藏print的标准输出

    在使用python调用函数时 想将函数中的print输出禁止掉又不想改函数的代码 可以定义如下HiddenPrints类解决 class HiddenPrints def enter self self original stdout sy
  • python机器学习之十一 numpy库之矩阵(matrix)

    本文主要介绍numpy库中的矩阵 矩阵的创建 常见的矩阵运算 矩阵 列表 数组之间的转换 矩阵的创建 语法格式 numpy matrix data dtype data 数据 dtype 数据类型 同数组 如 m2 np matrix 1
  • GIS栅格平均值计算

    GIS中批量计算tif栅格文件平均值 coding UTF 8 import arcpy import os inws r C Users DELL Desktop 新建文件夹 arcpy env workspace inws raster
  • Python错误处理的艺术:使用retrying库实现高效重试机制

    简介 学习如何使用 Python 的 retrying 库来处理在程序运行过程中可能出现的各种异常和错误 retrying 是一种简单 易于使用的重试机制 帮助我们处理由网络问题或其他暂时性错误引起的失败 在很多情况下 简单的重试可能就是解
  • Python学习(3):批量修改文件名(以excel文件为例)

    coding utf 8 import os dir input 请输入文件路径 for root dirs files in os walk dir for i in range len files filename files i ne

随机推荐