magic-methods相关内容

删除PHP对象;还包括unset()和__destruct

这些是否正确: 任何PHP对象在运行后都会被删除(就像它的代码一样)。 unset($objectName)只是刺激无论如何都会发生的事情。删除会更快一点(从RAM内存中),但最终是完全相同的。 __destruct类似于在删除对象之前运行的事件,因此我们可以拥有它,也可以不拥有它。任何代码都可以在其中运行。 unset()与__destruct有关吗?就像它会转到该步骤( ..
发布时间:2022-05-19 13:18:12 PHP

是否有可能使用 PHPUnit 模拟对象来调用一个神奇的 __call() 方法?

我在测试中有一个模拟对象.真实对象 PageRepository 使用 __call() 实现了一个神奇的方法,因此如果您调用 $pageRepository->findOneByXXXX($value_of_field_XXXX),它将在数据库中搜索与该参数匹配的记录. 有没有办法模拟那个方法? 真正的方法调用看起来像这样: $homepage = $pageRepository- ..
发布时间:2022-01-25 13:52:15 PHP

为什么调用 Python 的“魔术方法"不像对应的运算符那样进行类型转换?

当我从整数中减去浮点数时(例如 1-2.0),Python 会进行隐式类型转换(我认为).但是当我使用魔术方法 __sub__ 调用我认为是相同的操作时,它突然不再存在了. 我在这里缺少什么?当我为自己的类重载运算符时,除了将输入显式转换为我需要的任何类型之外,还有其他方法吗? a=1a.__sub__(2.)# 返回未实现a.__rsub__(2.)# 返回未实现# 但是,当然:a2.# ..
发布时间:2022-01-13 08:13:43 Python

动态创建 Yii FormModel 对象(CFormModel)

我正在开发一个涉及在高级抽象级别生成表单的应用程序(它是一个 CMS 应用程序).我想动态创建 CFormModel 对象并即时设置表单字段.我想我可以通过扩展 CFormModel 来做到这一点,然后动态创建表示表单字段的类属性(Yii 术语中的“属性"). 为了说明,而不是在以下类中指定登录表单(在文件中定义): //来自:http://www.yiiframework.com/doc ..
发布时间:2022-01-04 09:17:42 PHP

使用 PDO::FETCH_CLASS 和魔术方法

我有一个使用魔法方法来存储属性的类.这是一个简化的例子: class Foo {受保护的 $props;公共函数 __construct(array $props = array()) {$this->props = $props;}公共函数 __get($prop) {返回 $this->props[$prop];}公共函数 __set($prop, $val) {$this->props[$ ..
发布时间:2021-12-26 20:34:51 PHP

Python __call__ 特殊方法实战例子

我知道在调用类的实例时会触发类中的 __call__ 方法.但是,我不知道什么时候可以使用这种特殊方法,因为可以简单地创建一个新方法并执行在 __call__ 方法中完成的相同操作,而不是调用实例,您可以调用该方法. 如果有人告诉我这种特殊方法的实际用法,我将不胜感激. 解决方案 Django 表单模块很好地使用 __call__ 方法来实现一致的表单验证 API.您可以为 Djan ..
发布时间:2021-12-23 08:54:37 Python

使 Python 用户定义的类可排序、可散列

在 Python 中使用户定义的类可排序和/或可散列时,需要覆盖/实现哪些方法? 需要注意哪些问题? 我在解释器中输入 dir({}) 以获取内置字典的方法列表.其中,我假设我需要实现一些 ['__cmp__', '__eq__', '__ge__', '__gt__', '__hash__', '__le__', '__lt__', '__ne__'] Python3 和 Pyt ..
发布时间:2021-12-09 21:20:23 Python

如果 t.__str__() 返回非字符串,为什么 print(t) 错误,而不是 print(t.__str__()) ?

我正在尝试理解 Python 中的 __str__ 方法. class 测试:def __str__(self):返回 5t = 测试()打印(t.__str__()) 在这个方法中它返回一个整数值,但打印方法能够打印它. 但是,当我尝试 print(t) 时,它抛出了错误 TypeError: __str__ returned non-string (type int). 据我所 ..
发布时间:2021-09-11 19:42:49 Python

php 5.1.6 魔术__toString 方法

在 codeigniter 我试图使用 这个 插件,它需要我在我的模型中实现一个 toString 方法.我的 toString 方法很简单 公共函数__toString(){return (string)$this->name;} 在我使用 php 5.3 的本地机器上一切正常,但在使用 php 5.1.6 的生产服务器上,它显示“对象 id#48",该对象的 name 属性的值应该出现.. ..
发布时间:2021-09-09 18:54:42 PHP

Scala 的 apply() 方法魔法是如何工作的?

在 Scala 中,如果我在类或顶级对象中定义了一个名为 apply 的方法,那么每当我将一对括号附加到该类的实例时,就会调用该方法,并且将 apply() 的适当参数放在它们之间.例如: class Foo(x: Int) {def apply(y: Int) = {x*x + y*y}}val f = 新 Foo(3)f(4)//返回 25 所以基本上,object(args) 只是 ob ..
发布时间:2021-07-15 19:13:51 其他开发

有没有办法在 Python 中返回 min 和 max 的自定义值?

我有一个自定义类, A 类:def __init__(self, a, b):self.a = a自我.b = b 该类不可迭代或不可索引或类似的东西.如果可能的话,我想保持这种状态.是否有可能有类似以下的工作? >>>x = A(1, 2)>>>分钟(x)1>>>最大值(x)2 让我想到这一点的是 min 和 max 已列出作为 docs 中的“通用序列操作".由于 range 被认 ..
发布时间:2021-06-28 19:24:38 Python

Python 类方法链接

为了避免迷失在架构决策中,我会用一个类似的例子来问这个问题: 假设我想要一个这样的 Python 类模式: queue = TaskQueue(broker_conn)queue.region("DFW").task(fn, "some arg") 这里的问题是我如何设计一个类,以便可以以这种方式“链接"某些方法. task() 需要访问 queue 类实例属性,task 的操作依 ..
发布时间:2021-06-26 19:21:33 Python

我试图只打印选定数量的 Pi,它返回错误“十进制没有属性:__getitem__

def pi():提示=">>>"打印 "\n警告:Pi 可能需要一些时间来计算并且可能不总是超过 100 位正确."打印 "\n显示 Pi 到什么数字?"n=raw_input(提示)从十进制导入十进制,本地上下文使用 localcontext() 作为 ctx:ctx.prec = 10000pi = 十进制(0)对于范围内的 k(350):pi += (Decimal(4)/(Decimal ..
发布时间:2021-06-26 18:43:23 Python

为什么 Python 使用“魔法方法"?

我最近一直在玩 Python,我发现有点奇怪的一件事是“魔术方法"的广泛使用,例如为了使其长度可用,一个对象实现了一个方法,def __len__(self),然后在你编写len(obj)时调用它. 我只是想知道为什么对象不简单地定义一个 len(self) 方法并将它作为对象的成员直接调​​用,例如obj.len()?我确信 Python 这样做一定有很好的理由,但作为一个新手,我还没有弄 ..
发布时间:2021-06-25 19:50:37 Python

如何为 Python 属性实现 __iadd__

我正在尝试创建一个 Python 属性,其中就地添加由与检索值、添加另一个值和重新分配不同的方法处理.因此,对于对象 o 上的属性 x, o.x += 5 应该与 不同 o.x = o.x + 5 o.x 的值最终应该是一样的,以免混淆人们的期望,但我想让就地添加更有效率.(实际上,该操作比简单的加法花费的时间要多得多.) 我的第一个想法是在类中定义 x = 属性(等等等等)x. ..
发布时间:2021-06-22 19:33:07 Python