Python中的魔术方法大全
魔术方法
一种特殊的方法而已
特点
不需要人工调用,在特定时刻自动触发执行
魔术方法种类
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中的魔术方法大全的更多相关文章
- Python中的魔术方法详解
介绍 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中 ...
- Python中的魔术方法详解(双下方法)
介绍 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中 ...
- Python中的魔术方法
什么是魔术方法? 在Python中,所有用"__"包起来的方法,都称为[魔术方法]. 魔术方法一般是为了让显示器调用的,你自己并不需要调用它们. __init__:初始化函数 这个 ...
- python的魔术方法大全
在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”(魔术方法),例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,这 ...
- Python - 面向对象编程 - 魔术方法(双下划线方法)
什么是魔术方法 在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method 魔术方法,也叫双下划线方法 有哪些重要的魔术方法? __new__ https://www.c ...
- Python 类的魔术方法
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...
- PHP中的面向对象OOP中的魔术方法
一.什么是魔术方法: PHP为我们提供了一系列用__开头的函数,这些函数无需自己手动调用,会在合适的时机自动调用,这类函数称为魔术函数.例如: function __construct(){} 在ne ...
- 巧用PHP中__get()魔术方法
PHP中的魔术方法有很多,这些魔术方法可以让PHP脚本在某些特定的情况下自动调用.比如 __construct() 每次实例化一个类都会先调用该方法进行初始化.这里我们讲一下__get() 魔术方法的 ...
- Python中的__new__()方法与实例化
@Python中的__new__()方法与实例化 __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__ ...
随机推荐
- springBoot 过滤器去除请求参数前后空格(附源码)
背景 : 用户在前端页面中不小心输入的前后空格,为了防止因为前后空格原因引起业务异常,所以我们需要去除参数的前后空格! 如果我们手动去除参数前后空格,我们可以这样做 @GetMapping(value ...
- vite安装使用流程
安装vite 使用npm npm create vite@latest 使用yarn yarn create vite 使用pnpm pnpm create vite 还有一些选择配置比如使用那种框架 ...
- PostgreSQL:查询元数据(表 、字段)信息、库表导入导出命令
一.查询表.模式及字段信息 1.查询指定模式下的所有表 select tablename,* from pg_tables where schemaname = 'ods'; 2.查询指定模式下的表名 ...
- Keras网络可视化方法
Keras网络可视化方法 Keras模型可视化 Keras可视化依赖的两个包 参考链接 Keras模型可视化 代码: from keras.utils import plot_model plot_m ...
- 什么是JS?JS的用途?
一.JavaScript是什么?它有什么作用? JavaScript是一种运行在客户端的脚本语言,简称JS,属于解释性语言.它是一行翻译执行完以后再进行下一行,代码不进行预编译. JavaScript ...
- 获取VIP歌曲
""" 分析需求 1,确定目标网址 2,获取目标网址的所有数据 3,筛选我们想要的数据 4,下载歌曲保存 """ import os imp ...
- golang在win10安装、环境配置 和 goland(IDE开发golang配置)
前言 本人在使用goland软件开发go时,对于goland软件配置网上资料少,为了方便自己遗忘.也为了希望和我一样的小白能够更好的使用,所以就写下这篇博客,废话不多说开考. 一.查看自己电脑系统版本 ...
- 绿色版MySQL8.0.26安装流程
下载 5.7 8.0 官网 https://dev.mysql.com/downloads/mysql/ 国内镜像网站 https://developer.aliyun.com/mirror/ ...
- 【博学谷学习记录】超强总结,用心分享|前端开发HTML知识总结
HTML知识总结 字体加粗标签 注释快捷键 Ctrl + / 代码后缩进:shift + tad 1HTML标签 1.1排版标签介绍 1.1.1标题标签 <h1>1级标题<h1/&g ...
- 为 ASPNETCORE 7 项目添加 Serilog
本文将介绍如何为 ASP.NET Core 项目添加 Serilog. 添加 Serilog 首先,我们需要在项目中添加 Serilog 的 NuGet 包. dotnet add package S ...