Python----魔法函数__init__/__del__/__new__的用法

简介: Python----魔法函数__init__/__del__/__new__的用法

1、\_\_new\_\_:构造函数

  • 在创建对象的时候自动调用,可以控制对象的生成过程

举例:如下代码演示的就是当满足一定条件时才会创建实例

class Human:
    def __new__(cls,age=0,name=""):
        if age>0:
            return super().__new__(cls)

    def __init__(self,age=0,name=""):
        self.age=age
        self.name=name

hm=Human(10,"redrose2100")
print(hm)

hm=Human(0,"redrose2200")
print(hm)

执行结果如下:即当age=0 的时候并没有产生Human的对象,返回的是一个None

<__main__.Human object at 0x0000022DD88CBF10>
None

2、\_\_init__:初始化函数

  • 初始化函数,主要用于初始化对象的时候可以初始化一些属性,这个在平时用的是最多的了

如下:

class Human:
    def __init__(self,age=0,name=""):
        self.age=age
        self.name=name

hm=Human(10,"redrose2100")
print(hm.__dict__)

执行结果如下:

{'age': 10, 'name': 'redrose2100'}

3、\_\_del__:析构函数

  • 在python中默认的当对象消亡的时候会自动调用析构函数,一般不需要显示的声明调用,但是在一些特殊的场景,比如打开文件、通道等资源时,当独享消亡时并不会自动关闭,此时就需要在析构函数中显示的编写释放资源的代码,当显示调用 del obj 的时候也会调用此析构函数

如下演示析构函数自动调用过程:

class Human:
    def __init__(self,age=0,name=""):
        self.age=age
        self.name=name

    def __del__(self):
        print("析构函数")

hm=Human(10,"redrose2100")
print(1111111111111111111)

执行结果如下:

1111111111111111111
析构函数

如下演示的是显式的调用del函数,从而调用析构函数的场景

class Human:
    def __init__(self,age=0,name=""):
        self.age=age
        self.name=name

    def __del__(self):
        print("析构函数")

hm=Human(10,"redrose2100")
del hm
print(1111111111111111111)

执行结果如下:

析构函数
1111111111111111111
目录
相关文章
|
3月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
155 67
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
41 2
|
30天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
2月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
64 18
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
85 8
|
2月前
|
Python
Python中的函数
Python中的函数
62 8
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
126 80

热门文章

最新文章