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

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中规定&#xff0c;在定义类时&#xff0c;如果一个类属性名是以__&#xff08;两个下划线&#xff09;开头&#xff0c;则该类属性为私…...

4章8节:用R做数据重塑,行列命名和数据类型转换

在R语言中,行列命名和数据类型转换是数据处理中的两个基础性操作。它们不仅对数据的可读性和组织性至关重要,而且在执行数据分析、模型构建和结果解释时也扮演着重要的角色。 一、行和列命名 在数据科学和统计分析中,命名是组织和管理数据的一个重要部分。尤其是在处理复杂…...

浏览器发出请求到响应的过程

客户端发起请求&#xff1a;用户输入URL并回车&#xff0c;浏览器解析URL&#xff0c;生成HTTP请求。 DNS解析&#xff1a;浏览器查看本地hosts文件是否有域名的IP地址映射&#xff0c;如果没有则向DNS服务器发起解析请求&#xff0c;获取域名对应的IP地址。 建立TCP连接&…...

eNSP 华为划分VLAN

SW1&#xff1a; <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口&#xff0c;access口允许单个vlan通过 [SW1-GigabitEth…...

公用事业公司签署大规模电力供应协议

随着人工智能技术的迅猛发展&#xff0c;美国公用事业公司与数据中心运营商之间的电力供应协议数量显著增加&#xff0c;为未来几季度的销售和利润增长奠定了基础。根据高盛今年5月发布的一份报告&#xff0c;到2030年&#xff0c;数据中心的发电量预计将占美国总发电量的8%&am…...

C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器

题目&#xff1a; 题解&#xff1a; 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…...

冷知识:编程第一人是位伟大的女性

冷门智慧&#xff1a;阿达编程先驱的传奇人生揭秘在线播放免费听 - 喜马拉雅手机版欢迎收听由主播壹道徽为您带来的“冷门智慧&#xff1a;阿达编程先驱的传奇人生揭秘”精彩有声内容&#xff0c;该音频时长5分18秒&#xff0c;已被收听1062次&#xff0c;用户嘎嘎呗嘎嘎评价说…...

Python爬虫使用实例

IDE&#xff1a;大部分是在PyCharm上面写的 解释器装的多 → 环境错乱 → error&#xff1a;没有配置&#xff0c;no model 爬虫可以做什么&#xff1f; 下载数据【文本/二进制数据&#xff08;视频、音频、图片&#xff09;】、自动化脚本【自动抢票、答题、采数据、评论、点…...

主成分分析(PCA)

1 主成分分析简介 主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;&#xff0c; 将多个变量通过线性变换以选出较少个数重要变量的一种多元统计分析方法。主成分分析是由卡尔皮尔逊(Karl Pearson)于1901年发明的。通过维度约减的方式将高维度…...

python实现生命游戏

“生命游戏”&#xff08;Conway’s Game of Life&#xff09;是由数学家约翰康威提出的一种零玩家游戏。它是一个细胞自动机&#xff0c;由一组简单的规则决定每个细胞的状态。以下是用Python实现“生命游戏”的代码示例&#xff1a; Python代码实现 import numpy as np imp…...

基于vue框架的CIA报价平台的设计与实现1xv02(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,供应商,产品分类,产品信息,在线咨询,资质申请 开题报告内容 基于Vue框架的CIA报价平台的设计与实现 开题报告 一、选题背景 随着市场竞争的日益激烈&#xff0c;企业对于成本控制与效率提升的需求愈发迫切。在采购与供应链管理…...

【Kubernetes】k8s集群Pod控制器

目录 一.Pod控制器作用 二.Pod控制器类型 1.Deployment&#xff08;简称deploy&#xff09; ReplicaSet&#xff08;简称rs&#xff09; 2.StatefulSet&#xff08;简称sts&#xff09; 创建SatefulSet控制器 3.DaemonSet&#xff08;简称ds&#xff09; 4.Job 5.Cron…...

什么是NLP实体识别?

目录 1. 实体识别的基本概念 1.1 什么是实体识别&#xff1f; 1.2 实体识别的应用场景 2. 实体识别的常用方法 2.1 基于规则的方法 2.1.1 规则定义与模式匹配 2.2 基于机器学习的方法 2.2.1 特征工程与传统机器学习模型 2.3 基于深度学习的方法 2.3.1 神经网络模型 …...

掌握Jenkins自动化部署:从代码提交到自动上线的全流程揭秘

Jenkins自动化部署是现代软件开发中不可或缺的一部分&#xff0c;它不仅简化了代码的发布过程&#xff0c;还为整个团队带来了无与伦比的效率和协作力。想象一下&#xff0c;开发者们可以专注于编写高质量的代码&#xff0c;而不是为繁琐的手动部署所烦恼&#xff1b;测试人员能…...

糟糕界面集锦-控件篇09

目前我们还无法确定该把这个问题划到哪个类别中&#xff0c;但是如图所示&#xff0c;在一个列表框中只显示3 个项目无疑是愚蠢的。 这是微软的文件管理器提供的文件关联界面&#xff0c;用户需要把某一个特定类型的文件与一个应用程序关联时会弹出该对话框。如示例&#xff1a…...

喵喵蓝牙热敏打印机(下)

目录 前言一、电量、温度、缺纸检测1.电量检测2.针头温度检测3.缺纸检测 二、蓝牙APP通信打印1.蓝牙初始化2.APP通信打印 三、FreeRTOS任务整合 前言 喵喵蓝牙热敏打印机&#xff08;上&#xff09; 内容有点多&#xff0c;就分为了上下两篇。 一、电量、温度、缺纸检测 先启…...

软件测试第1章 软件测试是什么

目录​​​​​​​ 内容说明 一、软件测试与质量概览需要熟悉什么 二、如何理解质量保证 三、软件测试的误区-程序员和测试的关系 四、软件测试是什么&#xff1f; 五、软件测试的目的 六、软件测试与软件质量保证 七、软件测试的必要性 八、软件测试的基本概念分析 …...

【技术分享】 hysteria2从服务端到客户端部署教程

hysteria2从服务端到客户端部署教程 前言 在如今的网络环境中&#xff0c;尤其是涉及跨国访问的场景中&#xff0c;hysteria2作为一个新兴的传输协议工具&#xff0c;凭借其高效的传输能力和灵活的配置方式&#xff0c;受到了越来越多用户的青睐。本教程将带您一步步完成hyst…...

C++入门基础知识16

C 的关键字&#xff08;接上一篇博文&#xff01;&#xff01;&#xff01;&#xff09; 54. typeid 指出指针或引用指向的对象的实际派生类型。 55. typename typename&#xff08;类型名字&#xff09;关键字告诉编译器把一个特殊的名字解释成一个类型。在下列情况下必须对一…...

浏览器调试工具-Chrome Dev Tools

浏览器调试模式下的各个调试工具是常用的工具集&#xff0c;能够帮助开发者理解、调试和优化网页。 1.打开方式 直接在浏览器中按下F12键右键点击页面上的任一元素&#xff0c;选择“检查”&#xff08;Inspect&#xff09;在浏览器右上角点击菜单按钮&#xff0c;选择“更多…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...