问题标签 [instance-method]
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.
ruby - 如何理解 class_eval() 和 instance_eval() 的区别?
仅基于方法的名称,我希望 class_eval 允许您向 Foo 添加一个类方法,而 instance_eval 允许您向 Foo 添加一个实例方法。但他们似乎反其道而行之。
在上面的例子中,如果你在 Foo 类上调用 class_bar,你会得到一个未定义的方法错误,如果你在 Foo.new 返回的实例上调用 instance_bar,你也会得到一个未定义的方法错误。这两个错误似乎都与对 class_eval 和 instance_eval 应该做什么的直观理解相矛盾。
这些方法之间的真正区别是什么?
class_eval的文档:
mod.class_eval(string [, filename [, lineno]]) => obj
在 mod 的上下文中评估字符串或块。这可用于向类添加方法。
instance_eval的文档:
obj.instance_eval {| | 块 } => 对象
在接收器 (obj) 的上下文中评估包含 Ruby 源代码或给定块的字符串。为了设置上下文,在代码执行时将变量 self 设置为 obj,从而使代码可以访问 obj 的实例变量。
ruby - 为什么 instance_eval() 在类上调用时会定义类方法?
我的理解是,在对象上调用instance_eval应该允许您为该对象定义实例变量或方法。
但是在上面的例子中,当你在 Foo 类上调用它来定义 instance_bar 方法时,instance_bar 就变成了一个可以用“Foo.instance_bar”调用的类方法。很明显,这段代码没有创建实例方法,因为 Foo.new.instance_bar 导致“未定义的方法 'instance_bar'”。
为什么 instance_eval 在这种情况下定义类方法而不是实例方法?
iphone - 可可触感。这些 NSMutableData 方法之间到底有什么区别?
我有点不清楚的一件事是这些 NSMutableArray 方法之间的区别:
和
在幕后,类方法在这里究竟做了什么?它与实例方法有何不同?
干杯,道格
python - 克服 Python 关于实例方法的限制
Python 似乎对实例方法有一些限制。
- 无法复制实例方法。
- 实例方法不能被腌制。
这对我来说是个问题,因为我从事一个非常面向对象的项目,在该项目中我引用了实例方法,并且同时使用了 deepcopying 和 pickling。酸洗的事情主要是由多处理机制完成的。
什么是解决这个问题的好方法?我对复制问题做了一些丑陋的解决方法,但我正在寻找一个更好的解决方案来解决这两个问题。
有没有人有什么建议?
更新:
我的用例:我有一个很小的事件系统。每个事件都有一个.action
属性指向它应该触发的函数,有时该函数是某个对象的实例方法。
ruby - 将实例方法委托给类方法
在 Ruby 中,假设我有一个类Foo
可以让我对我的大量 Foos 集合进行分类。所有的 Foo 都是绿色和球形的,这是一个基本的自然规律,所以我定义了类方法如下:
这让我做
但不是
尽管它my_foo
显然是绿色的。
colour
显然,我可以定义一个调用的实例方法self.class.colour
,但如果我有许多这样的基本特征,那将变得笨拙。
我也可以通过定义method_missing
尝试任何缺少的方法的类来做到这一点,但我不清楚这是我应该做的事情还是丑陋的黑客,或者如何安全地做到这一点(特别是因为我实际上在 ActiveRecord在 Rails 中,我知道它用 method_missing 做了一些聪明有趣的东西)。
你会推荐什么?
python - instancemethod 装饰器在哪里?
在我的代码中,我有一个返回类实例的方法,如下所示:
为了让事情井井有条,我正在考虑将 Props 放在 MyClass 中。然后我想绕过 fun 并直接使该类成为 MyClass 的实例方法,如下所示:
注意注释 - instancemethod 装饰器不存在。
有没有办法做到这一点,即将一个可调用对象变成一个实例方法?如果我将@instancemethod 更改为@classmethod,则构造工作,当然,父类是类,而不是实例。我很惊讶我找不到任何关于似乎相反的操作的信息。
很想把这件事弄清楚!
编辑:
看来我的问题并不清楚。我所拥有的是一个成员函数 fun,它返回的不是单个值或元组,而是一个充满数据的对象。此数据是根据 MyClass 对象和函数参数的内容生成的。我的初始代码完全符合我的要求。第二个代码是我希望如何编写它。
此外,我注意到我正在寻找的装饰器只是以下内容:
当然,这与我打算绕过的“有趣”方法相同。还要注意,微不足道的“return cls”并不相同,尽管乍一看似乎是这样。
使用这个装饰器,我的第二个类定义是有效的并产生所需的结果,即 a.fun() 返回一个对象,该对象(可能)基于 a 中的数据进行初始化:
如果此处定义的 instancemethod 不能作为 python 内置函数使用,这仍然给我留下了一个问题,因为它似乎是 classmethod 和 staticmethod 旁边的遗漏。但是,如果不是,我想我可以接受这种结构。
ruby-on-rails-3 - 如何在模型中定义类方法,而不是实例方法?
我希望能够Activity.pull_latest
从控制器调用,但如果我这样做
我必须打电话给它Activity.new.pull_latest
。
如何在模型中定义类方法,而不是实例方法?
python - 在 Python 中为实例方法添加属性
当我试图让类装饰器和方法装饰器很好地结合在一起时,我遇到了这种行为。本质上,方法装饰器会将一些方法标记为特殊的并带有一些虚拟值,而类装饰器会在之后出现并稍后填充该值。这是一个简化的例子
有谁知道为什么cow.moo.thing = 5
不起作用,即使cow.moo.thing
很清楚地给了我 10?为什么cow.moo.__func__.thing = 5
有效?我不知道它为什么会这样,但是在随机摆弄dir(cow.moo)
列表中的东西试图让它工作时,它突然做到了,我不知道为什么。
objective-c - Objective-C 类方法不调用委托方法,而实例方法调用
我有以下两种方法:
如果我将 authenticateUserToGoogle 方法作为实例方法调用,如下所示:
我得到以下输出:
但是,如果我将 authenticateUserToGoogle 方法更改为类方法,只需将方法签名中的“-”更改为“+”,然后像这样调用它:
我得到以下输出:
换句话说,似乎使用类方法,委托方法连接 didReceiveResponse 永远不会被调用!
谁能向我解释这种行为?谢谢!
objective-c - Objective C 实例方法帮助 *初学者*
你们能帮我快速理解一个概念吗,我无法理解从 C 到 Objective-C 的转换:
如果我有一个看起来像这样的特定实例方法:
我明白了几件事...
- 它是一个可以被程序调用的实例方法。
- 在 C 中,这不会返回任何内容(只需执行卷曲中的代码)
- 在 C 中,语法稍微不那么令人困惑 -
(void)InstanceMethod(Char *nameOfArgument)
这是我需要帮助的地方:
- 当你调用这个方法时,你还在给它发送一个参数吗?
- 如果是这样,该参数是
NSString
方法名称的实例n
吗?
最后……跑题了
如果你有方法...
- (id) 是干什么用的?这是否告诉编译器它可以返回任何类型的对象?
感谢您帮助新手...非常感谢。