问题标签 [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 投票
3 回答
3903 浏览

ruby - (在 Ruby 中)允许混合类方法访问类常量

我有一个为它定义了常量的类。然后我定义了一个访问该类常量的类方法。这工作正常。一个例子:

我的问题是在尝试将此类方法移出到外部模块时出现,如下所示:

Ruby 将该方法解释为从模块而不是类请求一个常量:

那么,小伙伴们有什么妙招让方法访问类常量呢?非常感谢。

0 投票
5 回答
720 浏览

c# - C# 的 Python 风格的类方法?

有没有办法classmethod在 C# 中执行 Python 中的操作?

也就是说,一个静态函数将根据使用它的任何子类将 Type 对象作为(隐式)参数。

我想要的一个例子大约是

预期的输出是

(这里的键盘上的代码相同。)

0 投票
8 回答
6953 浏览

ruby - 将实例方法委托给类方法

在 Ruby 中,假设我有一个类Foo可以让我对我的大量 Foos 集合进行分类。所有的 Foo 都是绿色和球形的,这是一个基本的自然规律,所以我定义了类方法如下:

这让我做

但不是

尽管它my_foo显然是绿色的。

colour显然,我可以定义一个调用的实例方法self.class.colour,但如果我有许多这样的基本特征,那将变得笨拙。

我也可以通过定义method_missing尝试任何缺少的方法的类来做到这一点,但我不清楚这是我应该做的事情还是丑陋的黑客,或者如何安全地做到这一点(特别是因为我实际上在 ActiveRecord在 Rails 中,我知道它用 method_missing 做了一些聪明有趣的东西)。

你会推荐什么?

0 投票
5 回答
1462 浏览

java - 从 Java 调用继承的类方法

在 Python 中,类方法可以被继承。例如

你会如何在 Java 中做同样的事情?我目前有:

我想调用 B.main() 并让它打印“B”,但显然它会打印“A”,因为“new A()”是硬编码的。

您将如何更改“new A()”,以便将其参数化为使用它在调用时所在的类,而不是硬编码的类 A?

0 投票
1 回答
759 浏览

python - 有没有办法在 Python 中创建类属性?

由于某种原因,以下内容不起作用:

有没有办法做到这一点,或者我唯一的选择是诉诸某种元类诡计?

0 投票
2 回答
2605 浏览

iphone - 如何让 UIButton 在点击时执行我的类方法?

在任何事件之后,如何让 UIButton 在类上执行我的类+doSomething:(id)sender方法?我可以像我一样使用实例方法吗?MyClassUIControlEventTouchDown-addTarget:action:forControlEvents:

提前致谢。

0 投票
5 回答
5083 浏览

python - 函数作为类属性的赋值如何成为 Python 中的方法?

这个作业如何创建一个方法?分配对类执行以下操作似乎不直观:

  • 将函数变成未绑定的实例方法
  • 将封装的函数classmethod()转换为类方法(实际上,这非常直观)
  • 将封装的staticmethod()函数转换为函数

似乎对于第一个,应该有一个instancemethod(),而对于最后一个,根本不应该有一个包装函数。我知道这些是在一个class块内使用的,但为什么要在它之外应用呢?

但更重要的是,将函数分配到类中究竟是如何工作的?解决这三件事的魔法发生了什么?

更令人困惑的是:

但我认为在检索属性时,这与描述符有关。我认为这与这里的属性设置没有太大关系。

0 投票
2 回答
4540 浏览

ruby - Ruby 元类疯狂

我被困住了。我正在尝试动态定义一个类方法,但我无法理解 ruby​​ 元类模型。考虑以下类:

显然这两种方法都返回一个 Class 的实例。但这两个实例并不相同。他们也有不同的祖先:

区分元类和类实例有什么意义?

我发现,我可以send :define_method对元类动态定义一个方法,但是如果我尝试将它发送到类实例,它将无法工作。至少我可以解决我的问题,但我仍然想了解它为什么会这样工作。

更新 2010 年 3 月 15 日 13:40

以下假设是否正确。

  • 如果我有一个调用 self.instance_eval 并定义一个方法的实例方法,它只会影响该类的特定实例。
  • 如果我有一个调用 self.class.instance_eval 的实例方法(这与调用 class_eval 相同)并定义了一个方法,它将影响该特定类的所有实例,从而产生一个新的实例方法。
  • 如果我有一个调用 instance_eval 并定义一个方法的类方法,它将为所有实例生成一个新的实例方法。
  • 如果我有一个类方法,它在元/特征类上调用 instance_eval 并定义一个方法,它将产生一个类方法。

我认为它开始对我有意义。如果类方法中的 self 指向 eigen 类,那肯定会限制您的可能性。如果是这样,就不可能从类方法内部定义实例方法。那是对的吗?

0 投票
9 回答
213565 浏览

ruby - Ruby:从实例调用类方法

在 Ruby 中,如何从某个类的实例调用一个类方法?说我有

该行Truck.default_make检索默认值。但是有没有办法不提Truck?好像应该有。

0 投票
2 回答
1397 浏览

objective-c - 在 Objective C 中使用类方法的缺点

我想知道使用类方法是否存在任何内存/性能缺陷,或者只是一般的缺陷,例如:

或者

在类方法中放置很多功能很方便,尤其是在我必须处理内存管理(iPhone)的环境中,但是在方便的时候通常会有一个问题?

一个例子可能是一个由许多具有非常简单功能的类组成的网络服务。IE

我在我的 Web 服务类中收集了大量这些,只是实例化了 Web 服务类,并让这个类上的方法调用“结果”类上的类方法。这些类很简单,但它们处理大量 Xml,实例化大量对象等。

我想我是在问类方法在堆栈和内存中是否存在或被视为与实例化对象的消息不同?

或者它们只是在幕后实例化并再次下拉,因此只是节省几行代码的一种方式?