问题标签 [class-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.

0 投票
7 回答
16997 浏览

ruby - 有没有办法从 Ruby 中的实例调用私有类方法?

self.class.send :method, args...当然,除此之外。我想在类和实例级别都提供一个相当复杂的方法,而无需复制代码。


更新:

@Jonathan Branam:这是我的假设,但我想确保没有其他人找到解决方法。Ruby 中的可见性与 Java 中的可见性非常不同。您也很正确,private它不适用于类方法,尽管这将声明一个私有类方法:

0 投票
18 回答
147191 浏览

python - 类方法的目的是什么?

我正在自学 Python,我最近的一课是Python 不是 Java,所以我花了一段时间将我所有的 Class 方法都变成了函数。

我现在意识到我不需要使用 Class 方法来处理我static在 Java 中使用方法所做的事情,但现在我不确定何时会使用它们。我能找到的关于 Python 类方法的所有建议都是像我这样的新手应该避开它们,标准文档在讨论它们时是最不透明的。

有没有人有一个在 Python 中使用 Class 方法的好例子,或者至少有人可以告诉我什么时候可以合理使用 Class 方法?

0 投票
4 回答
15952 浏览

python - @classmethod 中的“self”指的是什么?

我以为我开始掌握编程的“Python 方式”。类的方法接受 self 作为第一个参数,以引用该方法在其上下文中被调用的类的实例。@classmethod 装饰器指的是一个方法,其功能与该类相关联,但不引用具体实例。

那么,如果该方法是在没有实例引用的情况下被调用的,@classmethod 的第一个参数(规范的“self”)指的是什么?

0 投票
2 回答
6015 浏览

objective-c - Objective-C 类方法的对象保留行为

保留和释放传递给类方法的对象的最佳实践是什么?

例如,如果您有一个像这样声明的“类变量”:

...这样做是正确的:

...它的缺点是调用者需要在参数上保持非零保留计数,以免它被过早释放。或者,可以这样做:

...它的缺点是如果没有相应的类级dealloc调用,它会泄漏内存。或者是否应该完全避免这种类变量欺骗,也许使用一个以更传统的方式管理这些对象的生命周期的单例类?

这是Apple 关于创建单例实例的文档

我正在使用的代码是非常漂亮(但仍然是新的)Objective Resource 项目(http://www.iphoneonrails.com/)。

0 投票
6 回答
24541 浏览

python - 将类方法作为实例中的方法调用是不好的形式吗?

前任。

如果我有这样的事情:

这将起作用:

但这是不好的形式吗?我应该只打电话吗

或者

显然,这只有在 f 不与 self/cls 交互并期望它是类的情况下才有意义。

?

0 投票
6 回答
50828 浏览

ruby - 如何使用 define_method 创建类方法?

如果您尝试以元编程方式创建类方法,这很有用:

我要遵循的答案...

0 投票
1 回答
362 浏览

python - Tkinter-Monitor-Window 的类方法

我想实现一个向用户报告正在进行的计算的监视器窗口。为此,我写了一个小类。但是因为我想以一种简单的方式在不同的模块中使用它,所以我想用类方法来实现它。这允许在没有实例的情况下以下列方式使用它:

此外,如果我在其他模块中使用它,则other_module.py中的Monitor.write()的输出将显示在同一窗口中。

我可以在每个模块中导入它以将特定输出重定向到同一监视器。我让它工作了,除了一件我不明白的小事。我无法使用我编写的特定处理程序关闭监视器窗口。我可以使用非类方法方式但不能使用处理程序作为类方法。

看代码:

因此,classmethod 似乎有效,并且似乎可以以正确的方式访问!任何想法,出了什么问题,它不适用于按钮?

干杯,菲利普

0 投票
3 回答
1668 浏览

ruby - 在Ruby中有没有相关的语法应用:class << self ... end

上面的语法用于定义类实例变量。但是当我考虑语法意味着什么时,它对我来说没有任何意义,所以我想知道这种语法是否用于任何其他类型的定义。我在这里的困惑点是:

附加运算符通常意味着“将右侧的内容添加到左侧的对象”。但是在这个块的上下文中,这怎么加起来就是“把这个块的内容放入类实例而不是实例的定义中”?

出于同样的原因,我很困惑为什么在一个上下文中 class << self 可以定义类实例变量,而在另一个上下文中它似乎创建了类变量,例如:

0 投票
5 回答
15252 浏览

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 的实例变量。

0 投票
2 回答
1762 浏览

ruby - 为什么 instance_eval() 在类上调用时会定义类方法?

我的理解是,在对象上调用instance_eval应该允许您为该对象定义实例变量或方法。

但是在上面的例子中,当你在 Foo 类上调用它来定义 instance_bar 方法时,instance_bar 就变成了一个可以用“Foo.instance_bar”调用的类方法。很明显,这段代码没有创建实例方法,因为 Foo.new.instance_bar 导致“未定义的方法 'instance_bar'”。

为什么 instance_eval 在这种情况下定义类方法而不是实例方法?