问题标签 [magic-methods]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7848 浏览

php - 将 __call 与静态类一起使用?

__call静态调用函数时可以使用魔术方法吗?

0 投票
5 回答
1641 浏览

python - 是否存在 len(someObj) 不调用 someObj 的 __len__ 函数的情况?

len(someObj)没有不调用someObj__len__函数的情况?

我最近用后者替换了前者,以(成功)加快了一些代码的速度。我想确保len(someObj)在与someObj.__len__().

0 投票
3 回答
1068 浏览

python - 如何在python中隐藏__methods__?

我只是想知道,如何隐藏特殊

python *中的方法?特别是我正在使用带有制表符完成功能的交互式 python 解释器,我只想显示我的模块公开的方法......

谢谢,

/我的/

*(至少来自使用 python shell 的用户)


现在看起来像这样:

我希望它看起来像:

0 投票
7 回答
28893 浏览

php - PHP 5.3 魔术方法 __invoke

本主题扩展了我何时/应该在 PHP 中使用 __construct()、__get()、__set() 和 __call()? 其中谈到__construct,__get__set魔术方法。

从 PHP 5.3 开始,有一个新的魔术方法称为__invoke. __invoke当脚本尝试将对象作为函数调用时,将调用该方法。

现在在我对这个方法所做的研究中,人们把它比作 Java 方法.run()——参见Interface Runnable

考虑了很久,我想不出你为什么会打电话$obj(); 而不是打电话$obj->function();

即使您正在迭代对象数组,您仍然会知道要运行的主函数名称。

那么__invoke魔术方法是另一个例子,“仅仅因为你可以,并不意味着你应该”在 PHP 中的快捷方式,还是在某些情况下这实际上是正确的做法?

0 投票
2 回答
11239 浏览

php - 即使方法存在,也可以在 PHP 中触发 __call()

PHP 文档__call()魔术方法有以下说明:

__call() 在对象上下文中调用不可访问的方法时触发。

在调用实际方法之前,即使存在方法,我也可以__call()调用吗?或者,是否有其他我可以实现的钩子或提供此功能的其他方式?

如果重要的话,这是一个static function(我实际上更喜欢使用__callStatic)。

0 投票
4 回答
2528 浏览

php - __get() 和 __set() 的最佳实践

源于这个关于使用__get()__set()访问私有变量的问题,我想了解它们的一般使用方式。我想知道何时何地是使用重载函数的最佳时间,以及你在哪里使用过重载函数(如果你有的话)。

为了清楚起见,我们正在谈论这些功能:http ://us2.php.net/manual/en/language.oop5.magic.php

0 投票
3 回答
31384 浏览

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

在 Scala 中,如果我定义了apply在类或顶级对象中调用的方法,则只要我将一对括号附加到该类的实例并将适当的参数apply()放在它们之间,就会调用该方法。例如:

所以基本上,object(args)只是object.apply(args).

Scala 如何进行这种转换?

这里是否有全局定义的隐式转换,类似于 Predef 对象中的隐式类型转换(但种类不同)?还是有更深层次的魔法?我之所以这么问,是因为 Scala 似乎强烈倾向于一致地应用一组较小的规则,而不是包含许多例外的许多规则。这最初对我来说似乎是一个例外。

0 投票
10 回答
24489 浏览

python - 特殊方法的 Python 文档在哪里?(__init__, __new__, __len__, ...)

可以在类中使用的特殊双下划线/dunder 方法的完整列表在哪里?(例如, __init__, __new__, __len__, __add__)

0 投票
25 回答
837358 浏览

python - __str__ 和 __repr__ 有什么区别?

__str__Python和Python有什么区别__repr__

0 投票
5 回答
6951 浏览

php - PHP的魔术方法__call子类

我的情况最好用一些代码来描述:

我知道我可以通过bar()在子类中重新定义(以及所有其他相关方法)来使其工作,但就我的目的而言,如果该__call函数可以处理它们会很好。它只会让事情变得整洁,更易于管理。

这在PHP中可能吗?