Python面向对象编程 —— 类和异常处理

news2025/1/20 21:49:56

21dd41dce63a4f2da07b9d879ad0120b.png

🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:
"没有罗马,那就自己创造罗马~"


目录

1. 类

1.1 类的定义

1.2 类变量和实例变量

1.3 类的继承

2. 异常处理

2.1类型异常

2.2除零异常


1. 类


类可以将变量、函数打包在一起,让代码在逻辑上更加清晰。
名称一般采用驼峰命名法,函数一般采用下划线命名法。

类中函数的第一个参数都是self调用类本身的变量和函数。
当调用类中函数的时候,第一个参数self不需要自己传递,Python会自动传递这个参数。

1.1 类的定义

class Hero:
    hero_count = 0  # 类变量

    def __init__(self, name, level=10):  # 构造函数
        self.name = name
        self.level = level
        print("Hero %s has been created." % name)
        Hero.hero_count += 1

    def __str__(self):  # 定义str()函数的效果
        return "Hero: %s" % self.name

    def greet(self):  # 问候
        print("%s: Hi!" % self.name)

    def move(self):  # 移动
        print("%s: Move!" % self.name)

    def get_level(self):  # 获取这个英雄的等级
        return self.level

    def next_level(self):
        return self.get_level() + 1  # 调用类中的其他函数


zeus = Hero("Zeus")
athena = Hero("Athena", 6)
zeus.greet()
athena.move()
print(zeus.name, athena.get_level(), athena.next_level())
print(str(zeus), athena)
print(Hero.hero_count)

1.2 类变量和实例变量


每个类可以创建任意多实例。

例如上面的Hero类,可以创建zeus和athena等实例。

类变量由所有实例共享,一般通过类名访问。

例如Hero.hero_count。

实例变量与每个具体的实例绑定,一般通过具体实例来访问。

例如zeus.name。

1.3 类的继承

子类可以继承父类的变量和函数。

self可以调用自身和父类中的变量和函数super()可以调用父类中的函数。
如果子类和父类的变量或函数重名优先使用子类的变量和函数。

class Hero:
    hero_count = 0  # 类变量

    def __init__(self, name, level=10):  # 构造函数
        self.name = name
        self.level = level
        print("Hero %s has been created." % name)
        Hero.hero_count += 1

    def __str__(self):  # 定义str()函数的效果
        return "Hero: %s" % self.name

    def greet(self):  # 问候
        print("%s: Hi!" % self.name)

    def move(self):  # 移动
        print("%s: Move!" % self.name)

    def get_level(self):  # 获取这个英雄的等级
        return self.level

    def next_level(self):
        return self.get_level() + 1  # 调用类中的其他函数


class Zeus(Hero):
    hero_name = "Zeus"

    def __init__(self, level):
        super().__init__(Zeus.hero_name, level)  # 通过super()调用父类的构造函数

    def greet(self):
        print("%s: Hi!(from child class)" % self.name)  # 使用的是父类的`name`


class Athena(Hero):
    hero_name = "Athena"

    def __init__(self, level):
        super().__init__(Athena.hero_name, level)  # 通过super()调用父类的构造函数

    def greet(self):
        print("%s: Hi!(from child class)" % self.name)  # 使用的是父类的`name`


zeus = Zeus(6)
athena = Athena(8)
print(zeus.name, athena.level, Hero.hero_count)
print(str(zeus), str(athena))
zeus.greet()
athena.greet()
print(zeus.get_level())

运行结果:

 

2. 异常处理

当某段代码出现异常时,代码会被终止。

此时如果不想让代码终止,可以用try ... except ... 语句来处理异常。

2.1类型异常

例如,将字符串转化成整数时,可能会出现异常:

s = input()

try:
    x = int(s)
    print(x)
except Exception as e:
    print(e)

print("Finished!")

 

2.2除零异常

当除以0时,也会出现异常:

x, y = map(int, input().split())

try:
    z = x / y
    print(z)
except Exception as e:
    print(e)

print("Finished!")

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1344601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【集合竞价】

文章目录 集合竞价时间集合竞价量柱的关系a、亮度顶部是未匹配的成交量b、量柱底部表示虚拟撮合的成交量 集合竞价常用的几种形态1、低开集合竞价2.平开集合竞价3、高开集合竞价4、看集合竞价的关键时间点:5、需要注意的几点 庄家使用集合竞价进行的操作1、利用集合…

【EI会议征稿通知】2024年通信技术与软件工程国际学术会议 (CTSE 2024)

2024年通信技术与软件工程国际学术会议 (CTSE 2024) 2024 International Conference on Communication Technology and Software Engineering (CTSE 2024) 2024年通信技术与软件工程国际学术会议 (CTSE 2024)将于2024年03月15-17日在中国长沙举行。会议专注于通信技术与软件工…

3D视觉-结构光测量-线结构光测量

概述 线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵 CCD 作为接受器件,因此…

【代码随想录】刷题笔记Day42

前言 这两天机器狗终于搞定了,一个控制ROS大佬,一个计院编程大佬,竟然真把创新点这个弄出来了,牛牛牛牛(菜鸡我只能负责在旁边喊加油)。下午翘了自辩课来刷题,这次应该是元旦前最后一刷了&…

自然语言处理3——玩转文本分类 - Python NLP高级应用

目录 写在开头1. 文本分类的背后原理和应用场景1.1 文本分类的原理1.2 文本分类的应用场景 2. 使用机器学习模型进行文本分类(朴素贝叶斯、支持向量机等)2.1 朴素贝叶斯2.1.1 基本原理2.1.2 数学公式2.1.3 一般步骤2.1.4 简单python代码实现 2.2 支持向量…

JSON 详解

文章目录 JSON 的由来JSON 的基本语法JSON 的序列化简单使用stringify 方法之 replacerstringify 方法之 replacer 参数传入回调函数stringify 方法之 spacestringify 方法之 toJSONparse 方法之 reviver 利用 stringify 和 parse 实现深拷贝 json 相信大家一定耳熟能详&#x…

2023-12-30 AIGC-LangChain介绍

摘要: 2023-12-30 AIGC-LangChain介绍 LangChain介绍 1. https://youtu.be/Ix9WIZpArm0?t353 2. https://www.freecodecamp.org/news/langchain-how-to-create-custom-knowledge-chatbots/ 3. https://www.pinecone.io/learn/langchain-conversational-memory/ 4. https://de…

AJAX: 整理2:学习原生的AJAX,这边借助express框架

1. npm install express 终端直接安装 2. 测试案例:Hello World! 新建一个express.js的文件,写入下方的内容 // 1. 引入express const express require(express)// 2. 创建服务器 const app express()// 3.创建路由规则 // request 是对请…

迪杰斯特拉(Dijkstra)算法详解

【专栏】数据结构复习之路 这篇文章来自上述专栏中的一篇文章的节选: 【数据结构复习之路】图(严蔚敏版)两万余字&超详细讲解 想了解更多图论的知识,可以去看看本专栏 Dijkstra 算法讲解: 迪杰斯特拉算法(Di…

如何理解李克特量表?选项距离相等+题目权重相等!

在学术研究中,通过开展问卷调查获取数据时,调查问卷分为量表题和非量表题。量表题就是测试受访者的态度或者看法的题目,大多采用李克特量表。 李克特量表是一种评分加总式态度量表(attitude scale),由美国…

TCP/IP的五层网络模型

目录 封装(打包快递) 6.1应用层 6.2传输层 6.3网络层 6.4数据链路层 6.5物理层 分用(拆快递) 6.5物理层 6.4数据链路层 6.3网络层 6.2传输层 6.1应用层 封装(打包快递) 6.1应用层 此时做的数据…

【数字图像处理】比特平面分割,对比空间平滑滤波器的尺寸对滤波效果,对比均值滤波器和中值滤波器对图像的平滑效果

实验目的 对比均值滤波器和中值滤波器对图像的平滑效果;编程对比空间平滑滤波器的尺寸对滤波效果的影响;编程对比均值滤波器和中值滤波器对图像的平滑效果。 实验方法 比特平面分割 比特平面分层,代替突出灰度级范围,突出特定…

Unity坦克大战开发全流程——开始场景——设置界面

开始场景——设置界面 step1:设置面板的背景图 照着这个来设置就行了 step2:写代码 关联的按钮控件 监听事件函数 注意:要在start函数中再写一行HideMe函数,以便该面板能在一开始就能隐藏自己。 再在BeginPanel脚本中调用该函数即…

基于大语言模型LangChain框架:知识库问答系统实践

ChatGPT 所取得的巨大成功,使得越来越多的开发者希望利用 OpenAI 提供的 API 或私有化模型开发基于大语言模型的应用程序。然而,即使大语言模型的调用相对简单,仍需要完成大量的定制开发工作,包括 API 集成、交互逻辑、数据存储等…

为什么 export 导出一个字面量会报错而使用 export default 不会报错

核心 其实总的来说就是 export 导出的是变量的句柄(或者说符号绑定、近似于 C 语言里面的指针,C里面的变量别名),而 export default 导出的是变量的值。 需要注意的是:模块里面的内容只能在模块内部修改,…

canvas绘制红绿灯路口

无图不欢&#xff0c;先上图 使用方法&#xff08;以vue3为例&#xff09; <template><canvas class"lane" ref"laneCanvas"></canvas> </template><script setup> import { ref, onMounted } from vue import Lane from …

IDEA中允许开启多个客户端

这个时候不要在客户端里创建socket对象时指定端口号了&#xff0c;否则会报错BindException

普通人如何月入过万?2024普通人创业适合干什么?

如果你的月收入不到1万块&#xff0c;也从来没有体验过一天就赚1万块是什么感觉的话&#xff0c;你还想创业&#xff1f;你如果想通过创业逆天改命&#xff0c;麻烦你一定要看完这篇文章。 普通人你要是想赚钱&#xff0c;一定要去赚那种能看得见的钱。 什么叫看得见的钱&…

35.搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入:…

服务器运行状况监控工具

服务器运行状况监视提供了每个服务器状态和性能的广泛概述&#xff0c;通过监控服务器指标&#xff0c;如 CPU 使用率、内存消耗、I/O、磁盘使用率、进程等&#xff0c;服务器运行状况监控可以避免服务器停机。 服务器性能监控指标 服务器是网络中最重要的组件之一&#xff0…