魔术方法

一种特殊的方法而已

特点

不需要人工调用,在特定时刻自动触发执行

魔术方法种类

1.__init__初始化方法*******

触发时机:实例化对象之后触发
作用:为对象添加对象的所属成员
参数:self,接收当前对象,其他的参数根据实例化的传参决定
返回值:无
注意事项:无

# _author:"Ma ren"
# date: 2023/2/23 # __init__:初始化魔术方法 class Human:
# 属性
name = '张三'
age = 18
gender = 'male'
skin = 'yellow' # 方法
def __init__(self,name,gender,age): # name是__init__的形参
print('__init__方法被执行')
# print(self)
# 为对象添加成员
self.name = name # self.name中的name是对象的成员
self.gender = gender
self.age = age def eat(self):
print('吃饭方法') def run(self):
print('跑步方法') def sleep(self):
print('睡觉方法') # 实例化一个人的对象
h1 = Human('lxx','male',18) #<1.制作一个对象,2.为对象初始化操作>
print(h1.__dict__) # 打印对象成员

2.__new__构造方法

触发时机:实例化对象的时候触发
作用:管理控制对象的生成过程
参数:一个cls接收当前类,其他的参数根据实例化的参数决定
返回值: 可有可无 没有返回值 实例化结果为None
注意事项:__new__魔术方法跟__init__的魔术方法参数一致(除了第一个)

# _author:"Ma ren"
# date: 2023/2/23 # __new__构造方法 class Human:
# 属性
name = '张三'
age = 18
gender = 'male'
skin = 'yellow' # 方法
# 魔术方法
def __new__(cls, *args, **kwargs):
# print('__new__方法被触发')
# return 2
# 自己控制对象的生成(女的生,男的不生)
# print(args)
if '男' in args:
# 不生成对象
pass
else:
# 生成对象且返回
return object.__new__(cls) # object上帝之手 def eat(self):
print('吃饭方法') def run(self):
print('跑步方法') def sleep(self):
print('睡觉方法') h1 = Human('女') # 实例化对象【1.制作一个对象(new),2.初始化对象】
print(h1) # 利用__new__方法来一个狸猫换太子
# _author:"Ma ren"
# date: 2023/2/23 class Monkey:
pass class Human:
def __new__(cls, *args, **kwargs):
return object.__new__(Monkey)
pass # 看似使用人类造对象,实际却生成了一个猴子对象
human_obj = Human()
print(human_obj)

3.__del__析构方法

触发时机:对象被系统回收的时候触发
作用:回收系统使用过程中的信息和变量
参数:一个self接收当前对象
返回值:无
注意事项:无

# _author:"Ma ren"
# date: 2023/2/23 # __del__魔术方法 class Human:
# 属性
name = '张三'
age = 18
gender = 'male'
skin = 'yellow' # 方法 def eat(self):
print('吃饭方法') def run(self):
print('跑步方法') def sleep(self):
print('睡觉方法') # 析构方法
def __del__(self):
print('__del__方法被触发') h = Human()
print(h) # 主动删除对象
del h # 删除对象,系统回收对象
print('=================')

Python中的魔术方法大全的更多相关文章

  1. Python中的魔术方法详解

    介绍 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中 ...

  2. Python中的魔术方法详解(双下方法)

    介绍 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中 ...

  3. Python中的魔术方法

    什么是魔术方法? 在Python中,所有用"__"包起来的方法,都称为[魔术方法]. 魔术方法一般是为了让显示器调用的,你自己并不需要调用它们. __init__:初始化函数 这个 ...

  4. python的魔术方法大全

    在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”(魔术方法),例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,这 ...

  5. Python - 面向对象编程 - 魔术方法(双下划线方法)

    什么是魔术方法 在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method 魔术方法,也叫双下划线方法 有哪些重要的魔术方法? __new__ https://www.c ...

  6. Python 类的魔术方法

    Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...

  7. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr

    PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...

  8. PHP中的面向对象OOP中的魔术方法

    一.什么是魔术方法: PHP为我们提供了一系列用__开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数.例如: function __construct(){} 在ne ...

  9. 巧用PHP中__get()魔术方法

    PHP中的魔术方法有很多,这些魔术方法可以让PHP脚本在某些特定的情况下自动调用.比如 __construct() 每次实例化一个类都会先调用该方法进行初始化.这里我们讲一下__get() 魔术方法的 ...

  10. Python中的__new__()方法与实例化

    @Python中的__new__()方法与实例化   __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__ ...

随机推荐

  1. Pandas_1_预备知识

    Chapter1_Python基础 1.1 Python基础 推导式: 两个对象之间的映射关系,类似于实数之间关系变换的函数,只不过对象变成了矩阵. # Ex1-1 vacabulary = ['co ...

  2. 【Java EE】Day10 JavaScript高级、DOM、BOM、事件

    一.简单入门 1.DOM 功能:获取html文档内容 代码:document.getElementById("id值") 功能: 设置属性值 修改标签体内容:xx.innerHtm ...

  3. Python:灵活的开发环境

    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/WTl7BPAhX5VuK-gmHaErMg 本文大概 1667 个 ...

  4. 当我们说大数据Hadoop,究竟在说什么?

    前言 提到大数据,大抵逃不过两个问题,一个是海量的数据该如何存储,另外一个就是那么多数据该如何进行查询计算呢.好在这些问题前人都有了解决方案,而Hadoop就是其中的佼佼者,是目前市面上最流行的一个大 ...

  5. 记一次InputStream流读取不完整留下的惨痛教训

    前言 首先,问问大家下面这段流读取的代码是否存在问题呢? inputStream = .... try { // 根据inputStream的长度创建字节数组 byte[] arrayOfByte = ...

  6. 动态SQL遇到的问题

    看图 查不出来任何数据 因为判断有问题 修改方法如下:

  7. 《HTTP权威指南》– 6.代理

    代理的概念: Web代理服务器是网络的中间实体.位于客户端和服务器之间,扮演"中间人"的角色,在各端点之间来回传送HTTP报文. 私有和共享代理: 代理服务器可以是某个客户端专用的 ...

  8. 微软出品自动化神器【Playwright+Java】系列(六) 之 字符输入、单元素键盘事件操作、上传文件、聚焦、拖拽、悬浮操作

    前言: 今天一早起床,就一直太阳穴疼,吃了四片去痛片已经无效,真的是疼的直恶心. 如果说学习或者写文章,能够或者头疼的话,那我想说,我还能坚持一会..... 很久没更新这系列的文章了,那么我们将Pla ...

  9. VUE项目无法启动NODE版本与NODE-SASS、SASS-LOADER版本不兼容解决方案

    一.错误分析 在VUE项目开发中,我们经常会遇到报错: Node Sass version 7.0.1 is incompatible with ^4.0.0. 网上解决方案也千奇百怪,最终操作下来, ...

  10. csp-j 游记

    ### 初赛 day -7 ~ day -1 赛前集训,都很简单,什么二叉树,图论呀,轻松搞定.做了 $2008$ 至 $2015$ 年的普及组真题,都在 $50$ 分以上,感觉初赛稳了(坐标 $HN ...