WHO-大蟒蛇的对象
一、对象基本概念1.1 什么是对象对象是Python中所有数据的抽象表示一切皆为对象数字、字符串、函数、类、模块等对象包含标识(identity)、类型(type)、值(value)1.2 对象三要素标识对象的唯一标识符内存地址通过id(对象)获取Python 对 -5 ~ 256 的整数做了缓存id 永远一样类型对象的类型通过type()获取值对象存储的数据二、类(Class)定义class 类名(继承对象): # 类属性所有实例共享 类属性名 值 def __init__(self,参数):#这里self相当于this每个方法都要写这个 #这个self是命名可以换成别的名字 构造方法 self.实例属性1 参数1 self.实例属性2 参数2 # 初始化代码 def 方法名(self, 参数1, 参数2, ...): 实例方法 # 方法体 return 结果 classmethod #注解 def 类方法名(cls, 参数1, 参数2, ...): 类方法 # 方法体 return 结果 staticmethod #注解 def 静态方法名(参数1, 参数2, ...): 静态方法 # 方法体 return 结果这里我好好说下那 self.实例属性1 参数1 self.实例属性2 参数2这两个是调用了这个构造函数的实例才具有但是构造函数不能重载会进行覆盖所以都用默认参数如果你调用的不是这个构造函数那么你对象没有这个实例属性动态添加实例方法# 先定义基础类 class Person: def __init__(self, name, age): self.name name self.age age # 1. 定义一个待添加的实例方法必须带self参数 def introduce(self): return f我是{self.name}今年{self.age}岁 # 2. 给Person类动态添加实例方法 Person.introduce introduce # 3. 测试新创建的实例、已创建的实例都能使用该方法 # 已创建的实例添加方法前创建 p1 Person(李四, 18) # 新创建的实例添加方法后创建 p2 Person(张三, 20) print(p1.introduce()) # 输出我是李四今年18岁 print(p2.introduce()) # 输出我是张三今年20岁属性默认是public外部可以对象.属性private的属性是以__开头,两个下划线class Person: # 类属性 species 人类 def __init__(self, name, age): 构造方法创建实例时自动调用 # 实例属性 self.name name self.age age # 私有属性约定非强制 self._private_attr 约定的私有可以访问 self.__real_private 真正私有 # 名称重整 def introduce(self): 实例方法 return self._private_attr,self.__real_private if __name____main__: pPerson(lisi,18) a,bp.introduce()#解包 print(f我是{p.species},我是{p.name},今年{p.age}) print(p.__real_private ) #报错非法访问私密属性 print(a,b)类方法 vs 实例方法 vs 静态方法类方法没有实例self用的是(cls,参数)只能访问类里定义的属性方法不能访问构造函数还有外部添加的实例属性和方法这里的静态方法和其他语言不一样不要静态方法访问静态变量和方法这里的静态方法就相当于普通函数 静态方法的本质是 “挂在类名下的工具函数”和实例无关所以一般用类名直接调用被类方法改变的属性和方法就是改了不管多少个实例都是改了的属性私有属性和方法class BankAccount: def __init__(self, owner, balance0): self.owner owner # 公共属性 self._balance balance # 受保护的属性约定 self.__password 123456 # 私有属性名称重整 def get_balance(self): 公共方法访问私有属性 return self._balance def deposit(self, amount): 存款 if amount 0: self._balance amount return True return False def __validate_password(self, password): 私有方法 return self.__password password def withdraw(self, amount, password): 取款需要密码验证 if self.__validate_password(password) and amount self._balance: self._balance - amount return True return False # 使用 account BankAccount(张三, 1000) print(account.owner) # 张三 print(account.get_balance()) # 1000 # print(account.__password) # 错误无法直接访问 # print(account._balance) # 可以访问但不推荐继承和多态单继承class Animal: def __init__(self, name): self.name name def speak(self): 父类方法 return 动物叫声 def move(self): 父类方法 return f{self.name}在移动 class Dog(Animal): # 继承Animal def __init__(self, name, breed): super().__init__(name) # 调用父类构造方法 self.breed breed def speak(self): 重写父类方法 return 汪汪汪 def wag_tail(self): 子类特有方法 return f{self.name}在摇尾巴 # 使用 dog Dog(旺财, 金毛) print(dog.speak()) # 汪汪汪多态 print(dog.move()) # 旺财在移动继承 print(dog.wag_tail()) # 旺财在摇尾巴子类特有多重继承class Flyable: def fly(self): return 能飞 class Swimmable: def swim(self): return 能游 class Duck(Flyable, Swimmable): # 多重继承 def __init__(self, name): self.name name #为什么这里没有super因为它会自动调用在父类并没有显示写出来 def quack(self): return 嘎嘎嘎 # 使用 duck Duck(唐老鸭) print(duck.fly()) # 能飞 print(duck.swim()) # 能游 print(duck.quack()) # 嘎嘎嘎super:调用父类的方法父类__init__没显式写→ Python 会隐式调用默认的空__init__子类不写super()也没问题父类__init__显式写了哪怕是空的→ 子类如果重写__init__必须手动调用super().__init__()否则父类的__init__不会执行哪怕里面是空代码。重写python里没有重载概念你写了两个参数不同的实例在cjava里算重载python直接覆盖取最下面的实例重写就是子类方法和父类的一摸一样然后重写自己的逻辑和父类不同class Parent: def __init__(self, value): self.value value def display(self): return f父类值{self.value} def common_method(self): return 父类通用方法 class Child(Parent): def __init__(self, value, extra): super().__init__(value) # 调用父类构造方法 self.extra extra def display(self): 重写并扩展父类方法 parent_info super().display() # 调用父类方法 return f{parent_info}额外值{self.extra} def common_method(self): 完全重写 return 子类重写的方法多态因为参数类型是python自己判断没有自己规定的# 定义不同类都有同名的 make_sound 方法 class Cat: def make_sound(self): return 喵呜~ class Dog: def make_sound(self): return 汪汪 class Duck: def make_sound(self): return 嘎嘎 # 统一的调用函数不关心对象类型只关心是否有 make_sound 方法 def animal_cry(animal): print(animal.make_sound()) # 调用传入不同对象表现出不同行为多态 animal_cry(Cat()) # 输出喵呜~ animal_cry(Dog()) # 输出汪汪 animal_cry(Duck()) # 输出嘎嘎抽象基类使用abc模块from abc import ABC, abstractmethod import math class Shape(ABC): # 抽象基类 abstractmethod def area(self): 抽象方法子类必须实现 pass abstractmethod def perimeter(self): 抽象方法子类必须实现 pass def describe(self): 具体方法子类可继承 return f这是一个形状 class Circle(Shape): def __init__(self, radius): self.radius radius def area(self): 实现抽象方法 return math.pi * self.radius ** 2 def perimeter(self): 实现抽象方法 return 2 * math.pi * self.radius class Rectangle(Shape): def __init__(self, width, height): self.width width self.height height def area(self): return self.width * self.height def perimeter(self): return 2 * (self.width self.height) # 使用 circle Circle(5) rect Rectangle(4, 6) print(circle.area()) # 78.53981633974483 print(rect.perimeter()) # 20 print(circle.describe()) # 这是一个形状属性装饰器property:把方法变成属性所以一般不要用到参数的实例可以用这个比如我调用一个没有参数的p.isshow(),要多,如果用了property修饰那个方法就可以p.isshow,更访问属性一样class Circle: def __init__(self, radius): self._radius radius property def radius(self): 获取半径 return self._radius # 2. 属性设置器radius.setter定义“赋值 radius 属性”的逻辑 radius.setter def radius(self, value): 设置半径 if value 0: raise ValueError(半径不能为负数) self._radius value property def diameter(self): 只读属性直径 return 2 * self._radius property def area(self): 只读属性面积 import math return math.pi * self._radius ** 2 # 使用 circle Circle(5) print(circle.radius) # 5 print(circle.diameter) # 10 print(circle.area) # 78.53981633974483 circle.radius 10 # 调用setter print(circle.area) # 314.1592653589793 # circle.diameter 20 # 错误只读属性

相关新闻

技术向善:端侧AI如何让智能门禁“认得”疲惫的你——ZUU中优人脸识别深度解析

技术向善:端侧AI如何让智能门禁“认得”疲惫的你——ZUU中优人脸识别深度解析

作为一名长期关注边缘计算与端侧AI落地的开发者,我一直对“人脸门禁”这个品类有种复杂的感受。市面上方案很多,但真正能稳定应对真实世界复杂场景的,屈指可数。直到最近研究了一家深圳厂商的产品逻辑——ZUU中优的动态双目AI门禁&#xff0c…

2026/7/23 4:59:07 阅读更多 →
yolo检测核心组件1:SE注意力机制 (Squeeze-and-Excitation)

yolo检测核心组件1:SE注意力机制 (Squeeze-and-Excitation)

yolo检测核心组件1:SE注意力机制 (Squeeze-and-Excitation) [!abstract] 论文信息 标题: Squeeze-and-Excitation Networks作者: Jie Hu, Li Shen, Gang Sun年份: 2018会议: CVPR 2018核心贡献: 通道注意力机制,动态调整通道权重 一、核心思想 SE注意力的…

2026/7/23 4:59:07 阅读更多 →
AI答辩辅助工具评测:提升学术效率的10款利器

AI答辩辅助工具评测:提升学术效率的10款利器

1. 项目概述作为一名经历过多次学术答辩的老手,我深知准备答辩材料时的痛苦——从PPT排版到讲稿撰写,从数据可视化到模拟问答,每个环节都让人头疼不已。最近一年来,AI辅助工具如雨后春笋般涌现,声称能解决这些痛点。但…

2026/7/23 4:59:07 阅读更多 →

最新新闻

Unity地形旋转全攻略:一键处理高度图、纹理与植被数据同步

Unity地形旋转全攻略:一键处理高度图、纹理与植被数据同步

1. 项目概述:为什么我们需要旋转整个Terrain?在Unity3D的地形编辑和场景搭建中,我们经常会遇到一个看似简单却异常棘手的需求:将整个Terrain地形,连同它上面生长的树木、铺设的贴图、散布的细节草和岩石,一…

2026/7/24 6:23:05 阅读更多 →
多模态问答技术解析与应用实践

多模态问答技术解析与应用实践

1. 多模态模型问答技术解析上周在调试一个客户项目时,遇到个典型场景:用户上传的产品图片需要自动生成规格说明。传统单模态方案要么用CV识别物体,再用NLP生成文本,流程割裂导致信息丢失严重。这让我重新审视了多模态问答技术的价…

2026/7/24 6:23:05 阅读更多 →
基于YOLOv10的实时火焰检测系统设计与实现

基于YOLOv10的实时火焰检测系统设计与实现

1. 项目概述这个基于YOLOv10的火焰检测系统是我最近完成的一个计算机视觉项目,它能够通过摄像头、视频文件或静态图像实时检测火焰和火灾。作为一名长期从事目标检测开发的工程师,我发现现有的火焰检测方案要么精度不足,要么速度太慢&#xf…

2026/7/24 6:23:05 阅读更多 →
大语言模型系统指令设计原理与工程实践

大语言模型系统指令设计原理与工程实践

1. 系统指令(System Prompt)的本质解析在AI交互领域,系统指令(System Prompt)是对话初始阶段植入的"基因代码",它从根本上定义了AI助手的身份定位和行为范式。不同于用户直接输入的操作指令(User Prompt),系统指令更像是在对话开始…

2026/7/24 6:23:05 阅读更多 →
深度学习在音乐生成与编曲自动化中的应用实践

深度学习在音乐生成与编曲自动化中的应用实践

1. 项目概述作为一名长期从事音乐科技开发的工程师,我最近完成了一个融合深度学习与音乐处理的综合项目。这个系统能够实现从旋律生成到完整编曲的全流程自动化处理,同时集成了多种音乐格式的转换功能。在实际应用中,这套工具已经帮助独立音乐…

2026/7/24 6:23:05 阅读更多 →
深度学习神经网络调参实战技巧与优化策略

深度学习神经网络调参实战技巧与优化策略

1. 神经网络调参实战指南在深度学习项目中,调参往往是最耗时却又最关键的一环。我见过太多团队在数据准备和模型架构上花费大量精力,最后却因为调参不当导致前功尽弃。今天分享的这套调参方法论,是我从50多个实际项目中总结出的实战经验&…

2026/7/24 6:22:05 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻