Python学习笔记--私有属性、构造方法、析构方法、常用内置方法
目录
私有属性
构造方法
析构方法
常用内置方法
私有属性
1. 私有属性是指在类内可以直接访问、而在类外无法直接访问的属性
2. Python中规定,在定义类时,如果一个类属性名是以__(两个下划线)开头,则该类属性为私有属性
举例
class Student:name = '未知'__id = '未知'def SetInfo(self, newname, newid):self.name = newnameself.__id = newiddef PrintInfo(self):print("姓名:%s, 身份证号:%s"%(self.name, self.__id))if __name__ == '__main__':stu = Student()stu.SetInfo("小明", "25256326")stu.PrintInfo()# 错误写法:print("身份证号:%s" % (stu.__id))# 正确写法:print("身份证号:%s" % (stu._Student__id))
注:实际上,Python中并不存在无法访问的私有属性。如果在类中定义了一个私有属性,则在类外访问该私有属性时需要在私有属性名前加上“_类名”,即可正常运行。
print("身份证号:%s" % (stu._Student__id))
构造方法
1. 构造方法是Python类中的内置方法之一,它的方法名为__init__,在创建一个类对象时会自动执行,负责完成新创建对象的初始化工作。
只有一个参数的构造方法示例
class Student:def __init__(self):print("构造方法被调用")self.name = "未知"def PrintInfo(self):print("姓名: %s"%self.name)if __name__ == '__main__':stu = Student() # 创建Student类对象stu,自动执行构造方法stu.PrintInfo()# 输出
'''
构造方法被调用
姓名: 未知
'''
带默认参数的构造方法示例
class Student1:def __init__(self, name = '未知'): #定义构造方法print("构造方法被调用")self.name = name #将self对应对象的name属性赋为形参name的值def PrintInfo(self):print("姓名:%s"%self.name)if __name__ == '__main__':stu1 = Student1()stu2 = Student1("小明")stu1.PrintInfo()stu2.PrintInfo()# 输出
'''
构造方法被调用
构造方法被调用
姓名:未知
姓名:小明
'''
析构方法
1. 析构方法是类的另一个内置方法,它的方法名为__del__,在销毁一个类对象时会自动执行,负责完成待销毁对象的资源清理工作,如关闭文件等。
注:类对象销毁有如下三种情况:
(1)局部变量的作用域结束
(2)使用del删除对象
(3)程序结束时,程序中的所有对象都将被销毁
class Student:def __init__(self, name):self.name = nameprint("姓名为%s的对象被创建"%self.name)def __del__(self):print("姓名为%s的对象被销毁"%self.name)def func(name):stu = Student(name)if __name__ == '__main__':stu1 = Student("小明")stu2 = Student("马红")stu3 = stu2del stu2func("张刚")del stu3stu4 = Student("刘健")# 输出
'''
姓名为小明的对象被创建
姓名为马红的对象被创建
姓名为张刚的对象被创建
姓名为张刚的对象被销毁
姓名为马红的对象被销毁
姓名为刘健的对象被创建
姓名为小明的对象被销毁
姓名为刘健的对象被销毁
'''
注:如果多个变量对应同一片内存空间,则只有这些变量都删除后才会销毁这片内存空间中所保存的对象,也才会自动执行析构方法
1. 判断题
析构方法可以没有形参。
A.正确
B.错误
正确答案:B
解析:析构方法应有一个形参self,对应正在销毁的对象。
常用内置方法
1. __str__
调用str函数对类对象进行处理时或者调用Python内置函数format()和print()时自动执行,__str__方法的返回值必须是字符串
class Complex:def __init__(self, real, image):self.real = realself.image = imagedef __str__(self):return str(self.real)+'+'+str(self.image)+'i'if __name__ == '__main__':c = Complex(3.2, 5.3)print(c)#输出
'''
3.2+5.3i
'''
2. 比较运算的内置方法
| 内置方法 | 功能描述 |
|---|---|
| __gt__(self, other) | 进行self>other运算时自动执行 |
| __lt__(self, other) | 进行self<other运算时自动执行 |
| __ge__(self, other) | 进行self>=other运算时自动执行 |
| __le__(self, other) | 进行self<=other运算时自动执行 |
| __eq__(self, other) | 进行self==other运算时自动执行 |
| __ne__(self, other) | 进行self!=other运算时自动执行 |
示例
class Student:def __init__(self, name, age):self.name = nameself.age = agedef __le__(self, other):return self.age < other.ageif __name__ == '__main__':stu1 = Student("小明", 19)stu2 = Student("小红", 20)print("马红的年龄小于等于小明的年龄:", stu2 <= stu1)# 输出
'''
False
'''
判断题
1. __str__方法的返回值可以是整数。
A.正确
B.错误
正确答案:B
解析:__str__方法返回的数据必然是字符串。
相关文章:
Python学习笔记--私有属性、构造方法、析构方法、常用内置方法
目录 私有属性 构造方法 析构方法 常用内置方法 私有属性 1. 私有属性是指在类内可以直接访问、而在类外无法直接访问的属性 2. Python中规定,在定义类时,如果一个类属性名是以__(两个下划线)开头,则该类属性为私…...
4章8节:用R做数据重塑,行列命名和数据类型转换
在R语言中,行列命名和数据类型转换是数据处理中的两个基础性操作。它们不仅对数据的可读性和组织性至关重要,而且在执行数据分析、模型构建和结果解释时也扮演着重要的角色。 一、行和列命名 在数据科学和统计分析中,命名是组织和管理数据的一个重要部分。尤其是在处理复杂…...
浏览器发出请求到响应的过程
客户端发起请求:用户输入URL并回车,浏览器解析URL,生成HTTP请求。 DNS解析:浏览器查看本地hosts文件是否有域名的IP地址映射,如果没有则向DNS服务器发起解析请求,获取域名对应的IP地址。 建立TCP连接&…...
eNSP 华为划分VLAN
SW1: <Huawei>system-view [Huawei]sysname SW1 [SW1]VLAN batch 10 20 //批量划分vlan [SW1]interface GigabitEthernet0/0/1 [SW1-GigabitEthernet0/0/1]port link-type access //设置为access口,access口允许单个vlan通过 [SW1-GigabitEth…...
公用事业公司签署大规模电力供应协议
随着人工智能技术的迅猛发展,美国公用事业公司与数据中心运营商之间的电力供应协议数量显著增加,为未来几季度的销售和利润增长奠定了基础。根据高盛今年5月发布的一份报告,到2030年,数据中心的发电量预计将占美国总发电量的8%&am…...
C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器
题目: 题解: struct NestedIterator {int *vals;int size;int cur; };void dfs(struct NestedIterator *iter, struct NestedInteger **nestedList, int nestedListSize) {for (int i 0; i < nestedListSize; i) {if (NestedIntegerIsInteger(neste…...
冷知识:编程第一人是位伟大的女性
冷门智慧:阿达编程先驱的传奇人生揭秘在线播放免费听 - 喜马拉雅手机版欢迎收听由主播壹道徽为您带来的“冷门智慧:阿达编程先驱的传奇人生揭秘”精彩有声内容,该音频时长5分18秒,已被收听1062次,用户嘎嘎呗嘎嘎评价说…...
Python爬虫使用实例
IDE:大部分是在PyCharm上面写的 解释器装的多 → 环境错乱 → error:没有配置,no model 爬虫可以做什么? 下载数据【文本/二进制数据(视频、音频、图片)】、自动化脚本【自动抢票、答题、采数据、评论、点…...
主成分分析(PCA)
1 主成分分析简介 主成分分析(Principal Component Analysis,PCA), 将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。主成分分析是由卡尔皮尔逊(Karl Pearson)于1901年发明的。通过维度约减的方式将高维度…...
python实现生命游戏
“生命游戏”(Conway’s Game of Life)是由数学家约翰康威提出的一种零玩家游戏。它是一个细胞自动机,由一组简单的规则决定每个细胞的状态。以下是用Python实现“生命游戏”的代码示例: Python代码实现 import numpy as np imp…...
基于vue框架的CIA报价平台的设计与实现1xv02(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
系统程序文件列表 项目功能:用户,供应商,产品分类,产品信息,在线咨询,资质申请 开题报告内容 基于Vue框架的CIA报价平台的设计与实现 开题报告 一、选题背景 随着市场竞争的日益激烈,企业对于成本控制与效率提升的需求愈发迫切。在采购与供应链管理…...
【Kubernetes】k8s集群Pod控制器
目录 一.Pod控制器作用 二.Pod控制器类型 1.Deployment(简称deploy) ReplicaSet(简称rs) 2.StatefulSet(简称sts) 创建SatefulSet控制器 3.DaemonSet(简称ds) 4.Job 5.Cron…...
什么是NLP实体识别?
目录 1. 实体识别的基本概念 1.1 什么是实体识别? 1.2 实体识别的应用场景 2. 实体识别的常用方法 2.1 基于规则的方法 2.1.1 规则定义与模式匹配 2.2 基于机器学习的方法 2.2.1 特征工程与传统机器学习模型 2.3 基于深度学习的方法 2.3.1 神经网络模型 …...
掌握Jenkins自动化部署:从代码提交到自动上线的全流程揭秘
Jenkins自动化部署是现代软件开发中不可或缺的一部分,它不仅简化了代码的发布过程,还为整个团队带来了无与伦比的效率和协作力。想象一下,开发者们可以专注于编写高质量的代码,而不是为繁琐的手动部署所烦恼;测试人员能…...
糟糕界面集锦-控件篇09
目前我们还无法确定该把这个问题划到哪个类别中,但是如图所示,在一个列表框中只显示3 个项目无疑是愚蠢的。 这是微软的文件管理器提供的文件关联界面,用户需要把某一个特定类型的文件与一个应用程序关联时会弹出该对话框。如示例:…...
喵喵蓝牙热敏打印机(下)
目录 前言一、电量、温度、缺纸检测1.电量检测2.针头温度检测3.缺纸检测 二、蓝牙APP通信打印1.蓝牙初始化2.APP通信打印 三、FreeRTOS任务整合 前言 喵喵蓝牙热敏打印机(上) 内容有点多,就分为了上下两篇。 一、电量、温度、缺纸检测 先启…...
软件测试第1章 软件测试是什么
目录 内容说明 一、软件测试与质量概览需要熟悉什么 二、如何理解质量保证 三、软件测试的误区-程序员和测试的关系 四、软件测试是什么? 五、软件测试的目的 六、软件测试与软件质量保证 七、软件测试的必要性 八、软件测试的基本概念分析 …...
【技术分享】 hysteria2从服务端到客户端部署教程
hysteria2从服务端到客户端部署教程 前言 在如今的网络环境中,尤其是涉及跨国访问的场景中,hysteria2作为一个新兴的传输协议工具,凭借其高效的传输能力和灵活的配置方式,受到了越来越多用户的青睐。本教程将带您一步步完成hyst…...
C++入门基础知识16
C 的关键字(接上一篇博文!!!) 54. typeid 指出指针或引用指向的对象的实际派生类型。 55. typename typename(类型名字)关键字告诉编译器把一个特殊的名字解释成一个类型。在下列情况下必须对一…...
浏览器调试工具-Chrome Dev Tools
浏览器调试模式下的各个调试工具是常用的工具集,能够帮助开发者理解、调试和优化网页。 1.打开方式 直接在浏览器中按下F12键右键点击页面上的任一元素,选择“检查”(Inspect)在浏览器右上角点击菜单按钮,选择“更多…...
如何用ADB提升调试效率?掌握这8个核心技巧
如何用ADB提升调试效率?掌握这8个核心技巧 【免费下载链接】awesome-adb ADB Usage Complete / ADB 用法大全 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-adb ADB(Android Debug Bridge)是Android调试的瑞士军刀࿰…...
4步精通Logisim-evolution:面向数字工程师的开源电路设计工具指南
4步精通Logisim-evolution:面向数字工程师的开源电路设计工具指南 【免费下载链接】logisim-evolution Digital logic design tool and simulator 项目地址: https://gitcode.com/gh_mirrors/lo/logisim-evolution Logisim-evolution作为一款开源的数字逻辑设…...
ESXi 8.0U3i在部署过程中出现技嘉(GIGABYTE)Z390 I AORUS PRO WIFI主板+万兆intel x520-da2 sr2 82599ES万兆网卡不识别处理方法
你遇到的问题核心是:ESXi 8.0U3i 原生 / 通用集成镜像缺少对技嘉 Z390 I AORUS PRO WIFI 板载网卡、Intel X520-DA2(82599ES)万兆网卡及部分 NVMe/USB 控制器的完整驱动支持。解决思路是:先排查 BIOS → 再用定制镜像(下载现成或自己封装)→ 最后验证驱动…...
如何让键盘听懂你的设备语言?设备条件判断打造智能多设备键盘映射方案
如何让键盘听懂你的设备语言?设备条件判断打造智能多设备键盘映射方案 【免费下载链接】Karabiner-Elements Karabiner-Elements is a powerful utility for keyboard customization on macOS Sierra (10.12) or later. 项目地址: https://gitcode.com/gh_mirrors…...
毫米波雷达信号处理入门:用MATLAB解析DCA1000采集的IWR6843原始数据(附代码)
毫米波雷达信号处理实战:从原始数据到距离谱的MATLAB实现 在自动驾驶和智能感知领域,毫米波雷达因其全天候工作能力和精确的距离测量特性,成为不可或缺的传感器。当开发者完成硬件配置和数据采集后,面对adc_data.bin这样的原始数据…...
深入XFS文件系统:从一次CentOS 7的Internal error报错,聊聊xfs_repair背后的原理与避坑指南
深入XFS文件系统:从Internal error报错到修复原理与实战指南 当你在一台运行CentOS 7的生产服务器上看到"XFS_WANT_CORRUPTED_GOTO"这个鲜红的报错信息时,作为运维工程师的肾上腺素会立刻飙升。这不是一个普通的I/O错误,而是XFS文件…...
Oracle PL/SQL避坑指南:处理超多列(2K+)数据导出到CSV的Loop循环写法
Oracle PL/SQL超宽表处理实战:2000列数据高效导出方案 1. 超宽表数据处理的核心挑战 在制造业质量检测、金融风控报表等场景中,我们经常会遇到列数超过2000的超宽表数据处理需求。这类表格通常包含大量测试指标、传感器数据或多维分析结果,传…...
STM32F103RCT6小车调试实录:搞定TCRT5000循迹与TB6612FNG调速的5个常见坑
STM32F103RCT6小车调试实战:从TCRT5000循迹到TB6612FNG调速的深度排错指南 实验室里,当你看着自己组装的STM32智能小车在黑色轨迹线上歪歪扭扭地行驶,或是电机转速时快时慢不受控制时,那种挫败感我太熟悉了。这不是一篇教你如何从…...
Qwen All-in-One部署实战:极简依赖,快速搭建AI应用
Qwen All-in-One部署实战:极简依赖,快速搭建AI应用 1. 引言:轻量级AI服务的新选择 在当今AI应用遍地开花的时代,开发者们常常面临一个两难选择:要么使用功能强大但资源消耗巨大的模型,要么选择轻量级但功…...
gitru:一个由 Rust 打造的零依赖 Git 提交信息校验工具
gitru 基于 Git 的 commit-msg Hook 实现,用于在提交阶段自动校验提交信息格式。 在团队协作开发中,规范的 Git 提交信息是代码追溯、版本管理、自动生成变更日志的基础。 但现实往往是: 人工约束容易遗漏手动配置 Hook 繁琐提交信息格式随心…...
