Python对象和实例属性
#type() 来判断对象类型#判断基本数据类型可以直接写intstr等print(type(123)type(456))#判断一个对象是否是函数怎么办可以使用types模块中定义的常量importtypestype(abs)types.BuiltinFunctionType 使用dir() 如果要获得一个对象的所有属性和方法可以使用dir()函数它返回一个包含字符串的list比如获得一个str对象的所有属性和方法 print(dir(ABC))classStudent(object):def__int__(self,name):self.namename#s Student(Bob)#s.score 90classStudent(object):nameStudentsStudent()# 创建实例s#print(s.name) # 打印name属性因为实例并没有name属性所以会继续查找class的name属性s.nameMichael# 给实例绑定name属性#print(s.name) # 由于实例属性优先级比类属性高因此它会屏蔽掉类的name属性#print(Student.name) # 但是类属性并未消失用Student.name仍然可以访问dels.name# 如果删除实例的name属性print(s.name)# 再次调用s.name由于实例的name属性没有找到类的name属性就显示出来了#为了统计学生人数可以给Student类增加一个类属性每创建一个实例该属性自动增加classStudent(object):count0def__init__(self,name):self.namename Student.count1# 测试:ifStudent.count!0:print(测试失败!)else:bartStudent(Bart)ifStudent.count!1:print(测试失败!)else:lisaStudent(Bart)ifStudent.count!2:print(测试失败!)else:print(Students:,Student.count)print(测试通过!)#把Student的gender属性改造为枚举类型可以避免使用字符串fromenumimportEnum,unique# 定义性别枚举classGender(Enum):Male0Female1# 定义学生类classStudent(object):def__init__(self,name,gender):self.namename# 关键检查传入的 gender 是否属于 Gender 枚举类型ifnotisinstance(gender,Gender):raiseValueError(gender must be an instance of Gender enum)self.gendergender# 测试代码# 1. 正确的用法bartStudent(Bart,Gender.Male)ifbart.genderGender.Male:print(测试通过!)# 2. 错误的用法会被拦截try:# 这里试图用字符串会抛出异常aliceStudent(Alice,Male)exceptValueErrorase:print(f错误被捕获{e})#异常try:print(try...)r10/2print(result:,r)exceptZeroDivisionErrorase:print(except:,e)finally:print(finally...)print(END)try:print(try...)r10/int(2)print(result:,r)exceptValueErrorase:print(ValueError:,e)exceptZeroDivisionErrorase:print(ZeroDivisionError:,e)else:print(no error!)finally:print(finally...)print(END----)try:print(try...)r10/int(2)print(result:,r)exceptValueErrorase:print(ValueError:,e)exceptZeroDivisionErrorase:print(ZeroDivisionError:,e)else:print(no error!)finally:print(finally...)print(END)# err.py:def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def main(): bar(0) main() #同样是出错但程序打印完错误信息后会继续执行并正常退出importloggingdeffoo(s):return10/int(s)defbar(s):returnfoo(s)*2defmain():try:bar(0)exceptExceptionase:logging.exception(e)main()print(END) def foo(s): n int(s) if n0: raise ValueError(invalid value: %s % s) return 10 / n def bar(): try: foo(0) except ValueError as e: print(ValueError!) raise bar() try: 10 / 0 except ZeroDivisionError: raise ValueError(input error!) #运行下面的代码根据异常信息进行分析定位出错误源头并修复 from functools import reduce def str2num(s): try: # 尝试转换为数字 return float(s) except ValueError as e: # 如果转换失败抛出带有更详细信息的异常 raise ValueError(f无法将 {s.strip()} 转换为数字) from e def calc(exp): try: ss exp.split() # 将 map 对象转换为列表以便立即触发 str2num 的执行和异常 ns list(map(str2num, ss)) return reduce(lambda acc, x: acc x, ns) except ValueError as e: # 捕获并处理 str2num 中抛出的 ValueError print(f计算表达式 {exp} 时出错: {e}) return None # 或者返回一个默认值如 0 def main(): # 测试有效的表达式 r calc(100 200 345) if r is not None: print(100 200 345 , r) # 测试包含无效数字的表达式 r calc(99 88 7.6.7) # 注意这里故意写错了多了一个点 if r is not None: print(99 88 7.6.7 , r) # 测试另一个有效表达式证明程序没有崩溃 r calc(10 20 30) if r is not None: print(10 20 30 , r) main() importloggingdeffoo(s):nint(s)logging.info(n %d%n)logging.basicConfig(levellogging.INFO)return10/ndefmain():foo(0)main()

相关新闻

Qwen3-TTS-12Hz惊艳效果:西班牙语足球解说风格语音生成节奏感评测

Qwen3-TTS-12Hz惊艳效果:西班牙语足球解说风格语音生成节奏感评测

Qwen3-TTS-12Hz惊艳效果:西班牙语足球解说风格语音生成节奏感评测 想象一下,你正在观看一场激动人心的足球比赛,解说员的声音随着场上局势起伏,进球瞬间的激情呐喊,紧张时刻的快速播报,那种节奏感和感染力&…

2026/5/17 7:53:33 阅读更多 →
SiameseUIE与Anaconda环境配置:Python开发最佳实践

SiameseUIE与Anaconda环境配置:Python开发最佳实践

SiameseUIE与Anaconda环境配置:Python开发最佳实践 1. 引言 信息抽取是自然语言处理中的核心任务之一,它能够从非结构化的文本中提取出结构化的信息。SiameseUIE作为一个强大的通用信息抽取模型,支持命名实体识别、关系抽取、事件抽取等多种…

2026/5/17 7:53:33 阅读更多 →
Qwen3-ASR-1.7B与知识图谱结合:语音搜索系统实现

Qwen3-ASR-1.7B与知识图谱结合:语音搜索系统实现

Qwen3-ASR-1.7B与知识图谱结合:语音搜索系统实现 1. 引言 想象一下这样的场景:你正在开车,突然想起要查询某个产品的技术参数,只需对着手机说句话,系统不仅能准确识别你的语音,还能理解你的意图&#xff…

2026/7/3 19:31:29 阅读更多 →

最新新闻

抖店AI标题优化怎么用标题违规和低质标题怎么改

抖店AI标题优化怎么用标题违规和低质标题怎么改

抖店AI标题优化怎么用?标题违规和低质标题怎么改 抖店商品标题写不好,会影响审核、搜索理解和买家点击。很多商家从 1688 搬标题时,原标题里带批发词、品牌词、极限词、无关热词,直接上架容易违规,也不一定适合抖店买家…

2026/7/5 4:29:15 阅读更多 →
如何3分钟完成通达信缠论插件部署:终极自动化分析指南

如何3分钟完成通达信缠论插件部署:终极自动化分析指南

如何3分钟完成通达信缠论插件部署:终极自动化分析指南 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为复杂的缠论分析而烦恼吗?面对繁琐的笔段划分和中枢识别,传…

2026/7/5 4:27:15 阅读更多 →
接口自动化测试项目框架详解

接口自动化测试项目框架详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选…

2026/7/5 4:25:15 阅读更多 →
单片机IWIP 原子云实验

单片机IWIP 原子云实验

单片机 :STM32F407 开发板:DMF407电机开发板 平台:keil V5.31HSE 为8MHZ HSI为16MHZ主函数int main(void) {HAL_Init(); /* 初始化HAL库 */sys_stm32_clock_init(336, 8, 2, 7); /* 设置时钟,168Mhz */delay_init…

2026/7/5 4:25:15 阅读更多 →
Nano Banana部署Gemini 2.5 Flash:ARM+NPU边缘多模态推理实战指南

Nano Banana部署Gemini 2.5 Flash:ARM+NPU边缘多模态推理实战指南

1. 项目概述:这不是一个“升级包”,而是一套可落地的嵌入式AI推理工作流 你手头有一块 Nano Banana 开发板——它不是树莓派,也不是 Jetson Nano,而是基于全志 H616 芯片、带双千兆网口、4GB LPDDR4、支持 PCIe 2.0 x1 的国产小钢…

2026/7/5 4:23:15 阅读更多 →
3分钟掌握Crontab UI:告别命令行恐惧的Linux定时任务可视化管理神器

3分钟掌握Crontab UI:告别命令行恐惧的Linux定时任务可视化管理神器

3分钟掌握Crontab UI:告别命令行恐惧的Linux定时任务可视化管理神器 【免费下载链接】crontab-ui Easy and safe way to manage your crontab file 项目地址: https://gitcode.com/gh_mirrors/cr/crontab-ui 还在为复杂的crontab语法而烦恼吗?Cro…

2026/7/5 4:19:14 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻