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__ ...
随机推荐
- VulnHub靶机渗透实战9-vikings
本次靶机是CTF风格的靶机. 靶场地址:Vikings: 1 ~ VulnHub 网络呢还是桥接模式. Description Back to the Top A CTF machine with ...
- Kubernetes(k8s)存储管理之数据卷volumes(五):动态制备-存储类StorageClass
目录 一.系统环境 二.前言 三.静态制备和动态制备 四.存储类StorageClass 4.1 存储类StorageClass概览 4.2 StorageClass 资源 五.创建存储类Storag ...
- 连表操作join 子查询 SQL补充 数据库软件navicat pymysql模块
目录 多表查询的两种方法 方式1:连表操作 方式2:子查询 SQL补充知识点 1.分组之前字段拼接 concat concat_ws 2.SQL执行判断条件 exists 3.表相关SQL补充 修改表 ...
- C#-将进程注册为子进程,父进程崩溃的时候子进程也随之退出的方案和实例
C#-将进程注册为子进程,父进程崩溃的时候子进程也随之退出的方案和实例 Kill child process when parent process is killed 我正在使用我的应用程序中的Sy ...
- 可视化软件Navicat,python操作MySQL
可视化软件Navicat 第三方开发的用来充当数据库客户端的简单快捷的操作界面 无论第三方软件有多么的花里胡哨,底层的本质还是SQL 能够操作数据库的第三方可视化软件有很多,其中针对MySQL最出名的 ...
- 基于.NetCore开发博客项目 StarBlog - (22) 开发博客文章相关接口
前言 本文介绍博客文章相关接口的开发,作为接口开发介绍的第一篇,会写得比较详细,以抛砖引玉,后面的其他接口就粗略带过了,着重于WebApi开发的周边设施. 涉及到的接口:文章CRUD.置顶文章.推荐文 ...
- 实用!7个强大的Python机器学习库!⛵
作者:韩信子@ShowMeAI 机器学习实战系列:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/artic ...
- md5-有道翻译
网站 aHR0cHMlM0EvL2ZhbnlpLnlvdWRhby5jb20v 测试发现三个值是变化的 一.第一种方法 initiator一步一步找,在t.translate中找到以下内容 这里可以看 ...
- c++中编码protobuf repeated string
参考:http://www.cppblog.com/API/archive/2014/12/09/209070.aspx proto文件 addressbook.proto syntax = &quo ...
- Spark详解(06) - SparkSQL
Spark详解(06) - SparkSQL Spark SQL概述 什么是Spark SQL Spark SQL是Spark用于结构化数据(Structured Data)处理的Spark模块. ( ...