当前位置: 首页 > news >正文

Python基础学习009——类的封装

# 面向对象是一种编程思想,还有另一种是面向过程
# 面向过程,具体步骤的实现,所有功能都自己书写
# 面向对象,使用一个个工具(函数),帮助完成各项任务
# 类:对多个特性相同或相似的食物的统称,根据特征不同一个事物可以属于多个类
# 对象:由类实例化的一个事物,指代1个
# 类的组成:类名(大驼峰),属性即类的特征,方法即类要做什么事
# 类的抽象:找到类名,属性和方法
"""
1.定义类:定义前先设计类
2.创建对象:使用第一步定义的类创建对象
3.通过对象调用方法
"""# 定义类
class Person:def run(self):  # 方法的本质是在类中定义的函数,只不过要带一个self参数print("跑起来")print(id(self))# 创建对象Person()形式即可创建对象,只不过这样不能使用,需要一个变量把对象保存起来
# 变量 = 类名()形式,变量中保存的是对象的引用,可以说变量a就是对象A
# 一个类可以创建多个对象,每个对象的地址都不一样
xiaoming = Person()
# 调用对象
xiaoming.run()# self:从函数的语法上说,self是形参,可以是任意变量名,只不过习惯将它写作self
# self是普通形参,但调用的时候可以不传递实参值,不符合函数语法.
# 实际是Python解释器在调用这个方法的时候自动将调用这个方法的对象,即xiaoming,传递给self
# 所以self本质是一个对象.验证:self的引用和调用小明的引用一致
print(id(xiaoming))  # 此处结果与上一行调用时run方法结果一致# ------------------------------------------------------------
# 添加属性 对象.属性名 = 属性值
# 1.类内部添加:self.属性名 = 属性值,一般添加在_init_方法中
# 2.类外物添加:对象.属性名 = 属性值,一般不用# 获取属性:对象.属性名
# 1.类内部获取:self.属性名
# 2.类外部获取:对象.属性名,一般不使用class Cat:def eat(self):print(f'小猫{self.name}吃鱼')black_cat = Cat()
black_cat.name = '黑黑'  # 在外部添加属性
black_cat.eat()# --------------------------------------------------
# 魔法方法:以两个下划线开头,两个下划线结尾,在满足某个条件的情况下会自动调用class Dog:def __init__(self, n, a):self.name = nself.age = adef __str__(self):return f'今年{self.age}岁了'def show(self):print(f'小狗{self.name}')# 魔法方法在什么情况下自动调用
# 创建对象后自动调用
white_dog = Dog('巴顿', 2)  # 在这一步就已经调用了__init__
# 用在哪:给对象添加属性(初始化方法,构造方法).某行代码在每次创建对象后都要执行,就可以写在__init__中
# 注意事项:不要漏_,不要拼错名称init,如果init方法出了self之外的形参,必须传参
white = white_dog  # 没有创建对象,只是给对象一个别名,只有类名()形式才是创建对象
white.show()  # 别名与原名同样使用# ---------------------------------------------
# __str__方法:
# 什么情况下自动调用:使用print打印对象时,这个方法中一般书写对象的属性信息,
# 用在哪:即想要在对象打印时输出什么内容,就把对应内容写进这个函数默认输出对象的引用地址
# 注意事项:必须返回一个字符串
print(white_dog)# -------------------------------------------
# __del__:对象被销毁是自动调用(处理后事)
# 使用del删除对象,或者代码全部运行结束,声明周期到,销毁对象
# 如果对象有多个名字,即多个对象引用一个对象,需要把所有跟这个对象有关的名称都删除才行
class demo:def __init__(self, n):self.name = nprint('调用了init')def __del__(self):print(f"调用del,{self.name}要删除")a = demo('zhangsan')
b = demo('liso')
c = demo('adfs')
cc = c
del cc  # cc只是对象c的其中一个名称,只删除cc是不会调用__del__的,
print("此语句执行在删除adfs前")
del c  # 与对象c有关的名称全部被删除,则调用__del__销毁
print('此语句执行在删除adfs后')
del a  # 特意声明删除对象a,此时调用__del__销毁对象a
print("zhangsan销毁后")
print("代码结束,此句后销毁剩余未销毁的对象,即对象b")# ---------------------------------------------------------------------------------
class House:def __init__(self, House_type, House_area):self.House_type = House_type  # 房型self.House_area = House_area  # 总面积self.Last_area = House_area  # 剩余面积self.item_list = []  # 家具列表def __str__(self):return f'户型:{self.House_type}\n总面积:{self.House_area}\n剩余面积:{self.Last_area}\n家具:{self.item_list}'def add_item1(self, *args):for i in args:if self.Last_area > i.get('area'):self.item_list.append({'name': i.get('name'), 'area': i.get("area")})self.Last_area -= i.get('area')else:print('剩余面积不足')def add_item2(self, item):if self.Last_area > item.area:self.item_list.append({'name': item.name, 'area': item.area})self.Last_area -= item.areaelse:print('剩余面积不足')class Furniture:def __init__(self, name, area):self.name = nameself.area = areadef __str__(self):return f'家具:{self.name},占地面积:{self.area}'house1 = House('三室一厅', 100)
house1.add_item1({'name': '衣柜', 'area': 2}, {'name': '餐桌', 'area': 1.5})
print(house1)
bed = Furniture('席梦思', 4)
chest = Furniture('衣柜', 2)
table = Furniture('餐桌', 1.5)
house1.add_item2(bed)
print(house1)

相关文章:

Python基础学习009——类的封装

# 面向对象是一种编程思想,还有另一种是面向过程 # 面向过程,具体步骤的实现,所有功能都自己书写 # 面向对象,使用一个个工具(函数),帮助完成各项任务 # 类:对多个特性相同或相似的食物的统称,根据特征不同一个事物可以属于多个类 # 对象:由类实例化的一个事物,指代1个 # 类的组…...

前端开发和后端开发,你更倾向于哪一种?

作为一个Web开发者,你是否曾经面临过这样的选择:是专注于前端开发,还是转向后端开发?前端开发和后端开发是Web开发中的两个不同的领域,它们各有各的特点和优势,也各有各的挑战和难点。那么,你应…...

Selenium 基本功能

#driver.quit()from selenium import webdriver from selenium.webdriver.chrome.service import Service# 尝试传参 s Service("chromedriver.exe") driver webdriver.Chrome(services)driver.get(https://www.baidu.com/) input()#1/导入Selenium库 from seleniu…...

智能井盖传感器有哪些?万宾科技智能井盖效果

在城市治理过程之中,小小的井盖却成为影响民生的一个重要方面,因为井盖一旦出现问题,会严重影响市民的生命安全,并且传统的井盖一般都会采用人工巡检的方式,这就导致了巡检的难度较大,从而不能对城市各个角…...

视频增强和修复工具 Topaz Video AI mac中文版功能

Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频,包括低分辨率视频、老旧影片、手机录制的视频等。 使用Topaz Video AI非常简单&#xff0c…...

0基础学习PyFlink——使用datagen生成流式数据

大纲 可控参数字段级规则生成方式数值控制时间戳控制 表级规则生成速度生成总量 结构生成环境定义行结构定义表信息 案例随机Int型顺序Int型随机型Int数组带时间戳的多列数据 完整代码参考资料 在研究Flink的水位线(WaterMark)技术之前,我们可…...

vue使用Web Speech API实现语音播报

SpeechSynthesisUtterance对象用于表示要播放的语音内容,SpeechSynthesis对象则用于控制语音的播放、暂停、停止等操作。 const synth window.speechSynthesis const msg new SpeechSynthesisUtterance() // 语音播放 const playVoice (text) > {synth.canc…...

MVC5_Day1(Razor视图引擎)

MVC提供了两种不同的视图引擎&#xff1a;Razor视图引擎、Web Forms视图引擎。 1.代码表达式 1.1 转换字符&#xff1a;核心转换字符&#xff0c;用作标记<>代码之间相互转换的字符。 1.2 两种基本转换&#xff1a;代码表达式、代码块。都是求出值&#xff0c;再写入响…...

超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能脚本error报错…...

vscode开启emmet语法

需要在setting.json中添加配置 首先进入设置&#xff0c;然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…...

07、vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。

目录 问题解决&#xff1a; 问题 vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1&#xff0c;因为在此系统上禁止运行脚本。 在使用 VSCode 时&#xff0c;创建 Vue 项目报的错 创建不了 Vue 项目 解决&#xff1a; 因为在此系统上禁止运行该脚本&#xff0…...

利用移动互联、物联网、智能算法、地理信息系统、大数据分析等信息技术开发的智慧工地云平台源码

智慧工地是指利用移动互联、物联网、智能算法、地理信息系统、大数据挖掘分析等信息技术&#xff0c;提高项目现场的“人•机•料•法•环•安”等施工要素信息化管理水平&#xff0c;实现工程施工可视化智能管理&#xff0c;并逐步实现绿色生态建造。 技术架构&#xff1a;微…...

海康多相机同步取流保存图片

话不多说&#xff0c;直接上代码。代码里包含了多窗口显示图像和保存图片。 #"rtsp://admin:123456qq192.168.10.192/stream1" # rtsp://admin:Admin123192.168.100.103:554/Streaming/Channels/101 #rtsp://admin:Admin123192.168.100.103:554/cam/realmonitor?ch…...

win10 + vs2017 + cmake3.17编译OSG-3.4.1

参考教程&#xff1a;https://blog.csdn.net/bailang_zhizun/article/details/120992244 1. 下载与解压 2. 修改configure 1&#xff09;Ungrouped Entries -- 》ACTUAL_3RDPARTY_DIR: 设置为&#xff1a; D:/Depend_3rd_party/OSG341/3rdParty 2&#xff09; Ungrouped E…...

Excel VBA开发基本语句说明

前言 VBA&#xff08;Visual Basic for Applications&#xff09;是一种用于编写宏的编程语言&#xff0c;它广泛应用于Microsoft Office套件中的各种应用程序&#xff0c;如Excel、Word、Access和PowerPoint等。在这些应用程序中&#xff0c;VBA可用于自动化任务、定制功能、…...

应用在智能空调中的数字温度传感芯片

智能空调是具有自动调节功能的空调。智能空调系统能根据外界气候条件&#xff0c;按照预先设定的指标对温度、湿度、空气清洁度传感器所传来的信号进行分析、判断、及时自动打开制冷、加热、去湿及空气净化等功能的空调。适合放在卧室&#xff0c;客厅等地方。 在中央控制系统…...

Qt界面美化之Qt Style Sheets

Qt style sheet 简称QSS style sheet可以在代码中单独对某个控件使用&#xff0c;例如&#xff1a; labelLEDLIN new QLabel("",this); labelLEDLIN->setFixedSize(36,36); labelLEDLIN->setStyleSheet("background-color:red;border-radius:18px;colo…...

prometheus监控告警部署(k8s内部)

一、部署prometheus 先来说明一下需要用到的组件&#xff0c;需要使用pv、pvc存放prometheus的数据,使用pvc存放数据即使pod挂了删除重建也不会丢失数据&#xff0c;使用configmap挂载prometheus的配置文件和告警规则文件&#xff0c;使用service开放对外访问prometheus服务的端…...

数字孪生特高压电网三维可视化平台实现能源智能管理

电力是现代社会不可或缺的基础能源&#xff0c;而有效管理电力资源对于实现可持续发展至关重要。近年来&#xff0c;随着物联网、大数据、人工智能等技术的快速发展&#xff0c;电网领域的数字化转型已经成为一种趋势。而其中关键的一环便是电网三维数字孪生技术&#xff0c;它…...

12.JavaScript(WebAPI) - JS api文献精解

文章目录 1.WebAPI 背景知识1.1什么是 WebAPI1.2什么是 API1.3API 参考文档 2.DOM 基本概念2.1什么是 DOM2.2DOM 树 3.获取元素3.1querySelector3.2querySelectorAll 4.事件初识4.1基本概念4.2事件三要素4.3简单示例 5.操作元素5.1获取/修改元素内容5.1.1innerText5.1.2innerHT…...

离谱!上海交大一学生私吞 5000 奖金,还用豆包 P 假收据骗队友。网友:学历虽高但人品太低

①5 月 18 日&#xff0c;上海交大一则学生违纪通报冲上热搜&#xff0c;实锤了前几天网上曝光的一名学生侵占团队竞赛奖金、造假欺骗队友的恶劣行为。②在 2025 下半年&#xff0c;樊同学&#xff08;上交大智慧能源学院女生&#xff09;与 K 同学&#xff08;电院男生&#x…...

实测 DeepSeek-V4 接入 Hermes:一句话爬取几十个网页,真的丝滑!

你好&#xff0c;我是郭震OpenClaw龙虾使用有一段时间了&#xff0c;体感很好&#xff0c;即便使用本地模型&#xff0c;如Qwen3.5:9B这样的模型&#xff0c;养虾Token自由&#xff0c;回复也比较丝滑。如下所示&#xff0c;轻松生成HTML风格的文件结构树&#xff1a;也能轻松生…...

CodeWave项目导出实战:从云端到本地的完整避坑指南(含数据库配置与端口冲突解决)

CodeWave项目导出实战&#xff1a;从云端到本地的完整避坑指南&#xff08;含数据库配置与端口冲突解决&#xff09; 当开发者完成CodeWave平台上的应用构建后&#xff0c;如何将项目顺利迁移至本地环境往往成为新的挑战。不同于云端的一键部署&#xff0c;本地化过程涉及环境差…...

新消费品牌的详情页,不该是产品说明书

很多企业做电商页面时&#xff0c;会把重点放在“展示产品”上。图片要好看&#xff0c;卖点要完整&#xff0c;参数要齐全&#xff0c;详情页要显得丰富&#xff0c;品牌故事要讲出来&#xff0c;工艺优势要摆出来&#xff0c;证书、原料、产地、功能、包装、规格、适用人群&a…...

使用coze为连锁服装品牌打造门店智能导购助手

### 业务背景&#xff1a;一线导购的“三座大山”客户是拥有 400 多家门店的快时尚品牌。一线导购每天面临的挑战很典型&#xff1a;- **信息记不住**&#xff1a;每周上百款新品上市&#xff0c;每款的成分、库存、搭配建议都要背&#xff0c;新员工培训周期长。 - **找货效率…...

保姆级教程:在Ubuntu 22.04上搞定DCU-Z100(ZiFang)驱动安装与验证

保姆级教程&#xff1a;在Ubuntu 22.04上搞定DCU-Z100&#xff08;ZiFang&#xff09;驱动安装与验证 国产DCU&#xff08;Deep Computing Unit&#xff09;正逐渐成为高性能计算领域的新选择&#xff0c;而DCU-Z100&#xff08;代号ZiFang&#xff09;作为其中的代表产品&…...

终极指南:如何快速上手BOTW-Save-Editor-GUI塞尔达传说存档编辑器

终极指南&#xff1a;如何快速上手BOTW-Save-Editor-GUI塞尔达传说存档编辑器 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI BOTW-Save-Editor-GUI是一款专为《塞…...

分支管理(二):解决合并冲突,处理“代码打架”

1. 问题场景 你已经学会了创建分支和合并分支。在上一篇文章里&#xff0c;合并过程顺滑得像切黄油——Git 自动完成了所有工作。但真实世界里&#xff0c;你和一个同事可能同时修改了同一个文件的同一处代码。当你试图把两个分支合并在一起时&#xff0c;Git 会停下来&#xf…...

【2026最新版Linux安装Mysql】CentOS 7 安装 MySQL 8.4.9 完整流程(RPM 手动安装+避坑+面试)

前言&#xff1a;本文记录在 CentOS 7 / RHEL 7 上&#xff0c;通过官网 RPM Bundle tar 包手动安装 MySQL 8.4.9&#xff08;LTS&#xff09; 的完整可复现流程。适合需要在老版本 CentOS 上部署 MySQL、为 Python/AI 后端或 Java 项目准备数据库环境的读者。读完可按步骤完成…...

MySQL通用查询日志写Webshell:绕过过滤的侧信道攻击详解

1. 从常规注入到日志利用&#xff1a;一个被忽视的攻击路径在渗透测试或者安全审计中&#xff0c;我们常常会遇到一些“硬骨头”——目标系统对常见的SQL注入利用方式做了严格的过滤。outfile、dumpfile这些直接写文件的函数被禁用了&#xff0c;drop database这类高危操作也被…...