首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

魔术方法

PHP魔术方法 概念 魔术方法,PHP将所有以两个下划线开头的类方法保留为魔术方法魔术方法即为一个特殊的类方法魔术常量,PHP向他运行的任何脚本提供了大量的预定义变量 __wakeup()...__wakeup(),执行unserialize()时,会先调用这个函数 当在类的外部调用unserialize()时,会先检查在类的内部是否存在一个__wakeup()方法,如果存在,则会先调用...,在类的实例化的时候,会自动调用该魔术方法,进行类的实例化 子类继承父类时__construct()的用法 1....自己有,自己初始化时会触发自己的__construct方法进行初始化操作 3....__destruct明确销毁对象或脚本结束时被调用 invoke() 当尝试以调用函数的方式调用一个对象时,__invoke()方法会被自动调用,但是如果没有显式地在实例化对象的后面加上参数的话就不会自动调用

9310
您找到你想要的搜索结果了吗?
是的
没有找到

Python学习【魔术方法

魔术方法 Python中,所有以双下划线“__”包围的方法(即定义在类中的函数)为魔术方法Magic Method。...__delattr__:在删除属性时调用的方法。 ---- 自定义容器 Python内置的魔术方法,可以使得用户自定义的类具有与常见容器数据类型类似的行为特性。...深拷贝是将对象及其数据全拷贝一份,对深拷贝对象数据的修改,不会影响原数据。...---- 其他常见方法 用于比较的魔术方法 __cmp__(self, other) 是比较方法里面最基本的的魔法方法 __eq__(self, other) 定义相等符号的行为,== __ne...self,other) 定义大于符号的行为,> __le__(self,other) 定义小于等于符号的行为,<= __ge__(self,other) 定义大于等于符号的行为,>= 数值计算的魔术方法

64320

Python魔术方法专题

_del_ 类的析构方法,它在对象被回收时执行,主要的作用时用来释放资源(内存 文件 进程等) 因为Python内存回收机制,使得Python的del方法的执行时间是不确定的,因此不推荐在Python中使用析构方法...__del__() # 主动调用是没用的,因为引用计数不为零,并不会回收资源 gc print("已经删除a了") print(a) del a # print(a) _dict_ 是一个绑定对象属性的字典...也就是说如果属性在__getattribute__中找到是不会执行这个方法的。 这个方法也容易陷入无限的递归当中。..._ # getattribute: error # getattr: error # getattribute: __dict__ # No attribute 'error' 以上就是Python魔术方法专题的详细内容...,更多关于Python 魔术方法的资料请关注ZaLou.Cn其它相关文章!

54510

Python常用魔术方法

什么是魔术方法? 在Python中,所有以双下划线__包起来的方法,统称为Magic Method(魔术方法),它是一种的特殊方法,普通方法需要调用,而魔术方法不需要调用就可以自动执行。...魔术方法在类或对象的某些事件出发后会自动执行,让类具有神奇的“魔力”。如果希望根据自己的程序定制自己特殊功能的类,那么就需要对这些方法进行重写。...Python中常用的运算符、for循环、以及类操作等都是运行在魔术方法之上的。...魔术方法__init__、__new__、__del__的应用 class People(object): # 创建对象 def __new__(cls, *args, **kwargs...如果 index 被定义,则 int 也需要被定义,且返回相同的值 上下文管理相关魔术方法(with) __enter__ 和 __exit__ __enter__(self) 1.

1K20

python中魔术方法简述

魔术方法:*** ? 实例化: new : 实例化一个对象 方法很少使用,一般使用return super().))new(cls)基类ibject方法来创建实例并返回。...因此,一般来说提供hash方法是为了作为set或者dict的key,所以去重要同时提供eq方法。 如果一个类不能hash,就把hash设置为None。 bool: ? 可视化: ?...容器相关方法: ? ? 可调用对象: python中一切皆对象,函数也不例外。 call类中定义一个该方法,实例就可以像函数一样被调用。 ? 上下文管理: ?...实例化对象时,并不会调用enter进入with语句块调用enter方法,然后执行语句块,最后离开时,调用exit方法。...getattribute: 除非明确知道用该方法做什么,不然少用。 ? 描述器 Descriptors: 所用魔术方法:get(),set(),delete() ? ?

24610

Python中特有的方法魔术方法

在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述;...11.4 魔术方法 在Ptython中,有一些内置好的特定的方法方法名的左右别 "__" 包围,在进行特定的操作时会自动调用,这些方法称之为没魔术方法。...下面是几种常见的魔术方法: _ _init _ _ 方法 : 初始化一个类,在创建实例对象为其赋值使用。 _ str_ 方法:在将对象转换成字符串str(对象)测试的狮虎,打印对象信息。..._ _class__方法 : 获取已知对象的类(对象. _ _calss _ _) _ _del__方法:对象在程序运行结束后进行对象销毁的时候调用这个方法,来释放资源。...,每调用一次就会生成一个新的对象 cls 就是class的缩写 # 在我们没有写这个方法的时候,python在创建类实例的时候会自动调用这个方法, # 写了这个方法之后就调用这个方法

31720

PHP 中的魔术方法

什么是魔术方法 ? PHP 魔术方法 官方文档 传送门 PHP 的魔术方法是指 PHP 中以两个下划线 _ 开头的类方法 我们自己在定义类方法时不能使用魔术方法的名称,除非是想使用其魔术功能 2....PHP 魔术方法 序号 方法名 描述 1 __construct 构造方法,类被实例化时执行 2 __destruct 析构方法,对象被销毁时执行 3 __call 当对象调用一个不可访问的方式时执行...当对不可访问或不存在的属性调用 isset() 或 empty() 时执行 8 __unset 当对不可访问或不存在的属性调用 unset() 时执行 9 __sleep 当对象使用 serialize() 序列化时,会先调用该方法...10 __wakeup 当对象使用 unserialize() 反序列化时,会先调用该方法 11 __serialize() 12 __unserialize() 13 __toString()

44830

PHP中魔术方法的用法

PHP中魔术方法的用法 /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法。所以你定义自己的类方法时,不要以 __为前缀。...为了这样的目的,PHP会自动寻找__sleep和__wakeup方法. 当一个对象被串行化,PHP会调用__sleep方法(如果存在的话)....在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值....如果没有__sleep方法,PHP将保存所有属性.下面的例子显示了如何用__sleep和__wakeup方法来串行化一个对象. Id属性是一个不打算保留在对象中的临时属性....__sleep方法保证在串行化的对象中不包含id属性. 当反串行化一个User对象,__wakeup方法建立id属性的新值. 这个例子被设计成自我保持.

36910
领券