问题标签 [static-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 投票
10 回答
8962 浏览

.net - 接口/抽象类中的静态方法

首先,我了解接口或抽象类(在 .NET/C# 术语中)不能具有抽象静态方法的原因。然后我的问题更集中在最佳设计解决方案上。

我想要的是一组“帮助器”类,它们都有自己的静态方法,这样如果我从第三方供应商那里获得对象 A、B 和 C,我可以拥有带有方法的帮助器类,例如

由于我的 AHelper、BHelper 和 CHelper 类基本上都具有相同的方法,因此将这些方法移动到这些类随后派生的接口似乎是有意义的。但是,希望这些方法是静态的,这使我无法拥有一个通用接口或抽象类来派生它们。

我总是可以使这些方法非静态,然后首先实例化对象,例如

但是,这段代码对我来说似乎并不直观。你有什么建议?我应该完全放弃使用接口或抽象类(我现在所处的情况)还是可以对其进行重构以完成我正在寻找的设计?

0 投票
13 回答
157244 浏览

python - Python中类方法的区别:绑定、未绑定和静态

以下类方法有什么区别?

是不是一个是静态的,另一个不是?

0 投票
7 回答
42881 浏览

c# - 如何用静态方法模拟?

我是模拟对象的新手,但我知道我需要让我的类实现接口才能模拟它们。

我遇到的问题是,在我的数据访问层中,我想要静态方法,但我不能将静态方法放在接口中。

解决这个问题的最佳方法是什么?我应该只使用实例方法(这似乎是错误的)还是有其他解决方案?

0 投票
14 回答
72244 浏览

c# - 方法可以设为静态,但应该这样吗?

ReSharper 喜欢指出每个 ASP.NET 页面的多个功能,这些功能可以设为静态。如果我将它们设为静态,它对我有帮助吗?我应该将它们设为静态并将它们移动到实用程序类吗?

0 投票
6 回答
7504 浏览

php - PHP中的“内联”类实例化?(为了便于方法链接)

在 Python 和 Ruby 等 OO 语言中常用的一个习惯用法是实例化一个对象并链接返回对对象本身的引用的方法,例如:

在 PHP 中,可以像这样复制这种行为:

尝试以下结果syntax error, unexpected T_OBJECT_OPERATOR

似乎这可以使用静态方法来完成,这可能是我最终要做的,但我想检查一下lazyweb:实际上是否有一种干净、简单的方法来“内联”实例化 PHP 类(如上面的片段)为此目的?

如果我决定使用静态方法,让类的静态方法返回类本身的实例化是否太神奇了?(有效地编写我自己的构造函数——那不是构造函数?)感觉有点脏,但如果没有太多可怕的副作用,我可能会这样做。

我想我也可以使用 get_user() 方法预先实例化一个 UserFactory,但我很好奇我上面所问的解决方案。

0 投票
15 回答
91252 浏览

c# - 使用单一方法的类——最好的方法?

假设我有一个旨在执行单个功能的类。执行该功能后,可以将其销毁。有什么理由更喜欢其中一种方法吗?

我故意对细节含糊其辞,以尝试获得针对不同情况的指导。但我并没有真正想到像 Math.random() 这样的简单库函数。我正在考虑更多执行某些特定、复杂任务的类,但只需要一个(公共)方法来完成它。

0 投票
9 回答
93519 浏览

php - 获取父类中子类的名称(静态上下文)

我正在构建一个考虑重用和简单性的 ORM 库;一切都很好,除了我被一个愚蠢的继承限制卡住了。请考虑以下代码:

显然,这不是我所期望的行为(尽管实际行为也很有意义)。所以我的问题是你们是否知道在父类中获取子类名称的方法。

0 投票
6 回答
10330 浏览

c# - C#:从基类静态方法确定派生对象类型

在 C# 程序中,我有一个带有静态“创建”方法的抽象基类。Create 方法用于创建类的实例并将其存储在本地以供以后使用。由于基类是抽象的,实现对象总是从它派生的。

我希望能够从基类中派生出一个对象,通过派生类调用静态的Create方法(在基类中实现一次),并创建派生对象的实例。

C# 语言中是否有任何工具可以让我完成这项工作。我当前的后备位置是将派生类的实例作为参数之一传递给 Create 函数,即:

0 投票
6 回答
3528 浏览

python - 在 Python 类声明中调用方法的最佳方式是什么?

假设我正在声明一个类C,其中一些声明非常相似。我想使用一个函数f来减少这些声明的代码重复。f可以像往常一样声明和使用:

哎呀!我无意中接触f到了外界,但这不需要self争论(并且不能出于明显的原因)。一种可能性是del我使用该功能后:

但是如果我想f在声明之后再次使用呢?删除该功能是不行的。我可以将其设为“私有”(即,在其名称前加上__)并对其进行处理,但通过异常通道@staticmethod调用对象变得非常时髦:staticmethod

我必须使用上述疯狂staticmethod,因为作为描述符的对象本身不可调用。我需要恢复被staticmethod对象包裹的函数,然后才能调用它。

必须有更好的方法来做到这一点。如何在类中干净地声明一个函数,在其声明期间使用它,以及稍后在类中使用它?我应该这样做吗?

0 投票
28 回答
306686 浏览

java - 为什么Java中的静态方法不能是抽象的?

问题是在 Java 中为什么我不能定义一个抽象的静态方法?例如