当前位置: 首页 > 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__方法返回的数据必然是字符串。

http://www.lryc.cn/news/425572.html

相关文章:

  • 4章8节:用R做数据重塑,行列命名和数据类型转换
  • 浏览器发出请求到响应的过程
  • eNSP 华为划分VLAN
  • 公用事业公司签署大规模电力供应协议
  • C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器
  • 冷知识:编程第一人是位伟大的女性
  • Python爬虫使用实例
  • 主成分分析(PCA)
  • python实现生命游戏
  • 基于vue框架的CIA报价平台的设计与实现1xv02(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 【Kubernetes】k8s集群Pod控制器
  • 什么是NLP实体识别?
  • 掌握Jenkins自动化部署:从代码提交到自动上线的全流程揭秘
  • 糟糕界面集锦-控件篇09
  • 喵喵蓝牙热敏打印机(下)
  • 软件测试第1章 软件测试是什么
  • 【技术分享】 hysteria2从服务端到客户端部署教程
  • C++入门基础知识16
  • 浏览器调试工具-Chrome Dev Tools
  • 基于车联网大数据平台的用户驾驶习惯行为画像分析
  • Ubuntu24.04搭建maxkb开发环境
  • C++ 指针和引用的区别
  • python绘制蕨菜叶分形
  • 1分钟了解pandas
  • django-celery应用-定时执行测试cases
  • 【C++深度探索】unordered_set、unordered_map封装
  • CSS——字体背景(Font Background)
  • 秋招突击——8/15——知识补充——Socket通信
  • Qt第十四章 模型视图
  • 硬件工程师必须掌握的MOS管详细知识