Questions tagged «static-methods»

既不需要类实例的方法,也不需要隐式访问此类实例的数据(或this,self,Me等)的方法。

3
静态方法与实例方法的性能
我的问题与静态方法与实例方法的性能特征及其可伸缩性有关。对于这种情况,假设所有类定义都在单个程序集中,并且需要多个离散的指针类型。 考虑: public sealed class InstanceClass { public int DoOperation1(string input) { // Some operation. } public int DoOperation2(string input) { // Some operation. } // … more instance methods. } public static class StaticClass { public static int DoOperation1(string input) { // Some operation. } public static int DoOperation2(string …

4
`staticmethod`和`abc.abstractmethod`:会融合吗?
在我的Python应用程序中,我想创建一个既是staticmethod和又是的方法abc.abstractmethod。我该怎么做呢? 我尝试同时应用两个装饰器,但不起作用。如果我这样做: import abc class C(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod @staticmethod def my_function(): pass 我遇到异常*,如果执行此操作: class C(object): __metaclass__ = abc.ABCMeta @staticmethod @abc.abstractmethod def my_function(): pass 没有强制执行抽象方法。 如何制作抽象的静态方法? *例外: File "c:\Python26\Lib\abc.py", line 29, in abstractmethod funcobj.__isabstractmethod__ = True AttributeError: 'staticmethod' object has no attribute '__isabstractmethod__'

7
无法静态引用非静态方法
用Java构建多语言应用程序。从R.string资源XML文件插入String值时出现错误: public static final String TTT = (String) getText(R.string.TTT); 这是错误消息: 错误:无法从上下文类型静态引用非静态方法getText(int) 这是怎么引起的,我该如何解决?

15
使用很多静态方法是一件坏事吗?
当该类不需要跟踪内部状态时,我倾向于将该类中的所有方法声明为静态的。例如,如果我需要将A转换为B并且不依赖于可能变化的某些内部状态C,则可以创建一个静态转换。如果存在一个我希望能够调整的内部状态C,那么我将添加一个构造函数来设置C,并且不要使用静态转换。 我阅读了各种建议(包括关于StackOverflow的建议),不要过度使用静态方法,但是我仍然无法理解上述经验法则的错误之处。 那是合理的方法吗?

6
静态方法-如何从另一个方法调用一个方法?
当我有用于在类中调用另一个方法的常规方法时,我必须这样做 class test: def __init__(self): pass def dosomething(self): print "do something" self.dosomethingelse() def dosomethingelse(self): print "do something else" 但是当我有静态方法时,我不能写 self.dosomethingelse() 因为没有实例。在Python中如何从同一个类的另一个静态方法中调用一个静态方法,我该怎么做? 编辑:真是一团糟。好的,我将问题改回原来的问题。我已经有了彼得·汉森(Peter Hansen)评论中第二个问题的答案。如果您认为我应该再提出一个已经存在的答案的问题,请告诉我。


9
获取父类中子类的名称(静态上下文)
我在构建ORM库时要考虑到重用和简单性。一切正常,除了我被愚蠢的继承限制所困。请考虑以下代码: class BaseModel { /* * Return an instance of a Model from the database. */ static public function get (/* varargs */) { // 1. Notice we want an instance of User $class = get_class(parent); // value: bool(false) $class = get_class(self); // value: bool(false) $class = get_class(); // value: …

10
静态方法和实例方法之间的区别
我只是在阅读教科书中给我的课文,但我不确定自己是否明白我在说什么。这基本上是在告诉我静态方法或类方法包括static的“ modifier”关键字。但是我真的不知道那意味着什么吗? 有人可以简单地向我解释什么是静态方法或类方法吗? 另外,我可以简单解释一下什么是Instance方法吗? 这是他们在教科书中给我的: 存在或不存在静态修饰符具有重要的实际意义。一旦Java处理了它所属的类的定义,就可以调用并执行一个公共类方法。实例方法不是这种情况。在公共实例方法可以被调用和执行之前,必须创建它所属的类的实例。要使用公共类方法,您只需要类。另一方面,在使用公共实例方法之前,您必须具有该类的实例。 在另一个方法的定义内调用静态方法的方式根据这两个方法是否属于同一类而有所不同。在上面的示例中,阶乘和main都是MainClass类的方法。结果,在main的定义中对阶乘的调用仅引用方法名称“阶乘”。

7
静态函数已声明但未在C ++中定义
使用C ++从以下代码中获取错误。 Main.cpp #include "file.h" int main() { int k = GetInteger(); return 0; } 文件.h static int GetInteger(); File.cpp #include "file.h" static int GetInteger() { return 1; } 我得到的错误: Error C2129: static function 'int GetInteger(void)' declared but not defined. 我已经读过著名的文章“在C和C ++中组织代码文件”,但不了解此代码有什么问题。

7
在静态函数中使用$ this失败
我有想要在其中使用$ this的方法,但我得到的是:致命错误:不在对象上下文中时使用$ this。 我怎样才能使它工作? public static function userNameAvailibility() { $result = $this->getsomthin(); }
77 php  oop  this  static-methods 

3
静态变量链接错误
我在Mac上编写C ++代码。为什么在编译时出现此错误?: 架构i386的未定义符号:“ Log :: theString”,引用自:libTest.a(Log.o)ld中的Log :: method(std :: string)ld:找不到架构i386铛的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用) 不知道我的代码是否错误,或者我必须向Xcode添加其他标志。我当前的XCode配置是“静态库”项目的默认配置。 我的代码: Log.h ------------ #include <iostream> #include <string> using namespace std; class Log{ public: static void method(string arg); private: static string theString ; }; Log.cpp ---- #include "Log.h" #include <ostream> void Log::method(string arg){ theString = "hola"; cout << theString << …

4
模块函数vs静态方法vs类方法vs没有修饰符:哪个成语更适合pythonic?
我是一个Java开发人员,他喜欢开和关Python。我最近偶然发现了这篇文章,其中提到了Java程序员在选择Python时常犯的错误。第一个吸引了我的眼球: Java中的静态方法不会转换为Python类方法。哦,可以肯定,它或多或少会产生相同的效果,但是类方法的目标实际上是要做通常在Java中甚至是不可能的事情(例如继承非默认构造函数)。Java静态方法的惯用翻译通常是模块级别的函数,而不是类方法或静态方法。(静态的final字段应转换为模块级常量。) 这并不是性能问题,但必须使用此类Java惯用语代码的Python程序员会因键入Foo.Foo.someMethod而应为Foo.someFunction而感到恼火。但请注意,调用类方法涉及额外的内存分配,而调用静态方法或函数则不会。 哦,所有那些Foo.Bar.Baz属性链也不是免费提供的。在Java中,那些点名是由编译器查找的,因此在运行时,实际上有多少个都没有关系。在Python中,查找是在运行时进行的,因此每个点都很重要。(请记住,在Python中,“扁平比嵌套更好”,尽管它与“可读性计数”和“简单胜于复杂”更多地与性能无关)。 我发现这有点奇怪,因为staticmethod的文档说: Python中的静态方法类似于Java或C ++中的静态方法。另请参见classmethod()以获取对创建备用类构造函数有用的变体。 更令人费解的是,这段代码: class A: def foo(x): print(x) A.foo(5) 未能按预期在Python 2.7.3中失败,但在3.2.3中工作正常(尽管您不能仅在类上调用A实例的方法)。 因此,有三种方法可以实现静态方法(如果使用类方法,则有四种方法),每种方法都有细微的差别,其中一种似乎没有记载。这似乎与Python的口头禅不一致,即应该有一种-最好只有一种-显而易见的方法。哪个成语是最Python化的?各自的优缺点是什么? 到目前为止,这是我的理解: 模块功能: 避免Foo.Foo.f()问题 污染模块的名称空间比其他方法更多 没有继承 静态方法: 将与类相关的函数保留在类内部,并保留在模块名称空间之外。 允许在类的实例上调用该函数。 子类可以覆盖该方法。 类方法: 与staticmethod相同,但也将类作为第一个参数传递。 常规方法(仅适用于Python 3): 与staticmethod相同,但不能在类的实例上调用该方法。 我在想这个吗?这不是问题吗?请帮忙!

6
如何确保实用程序静态方法的线程安全?
是否可以通过任何常规方法或规则来确保专门用于任何应用程序的各种Utility类的静态方法的线程安全性。在这里,我想特别指出Web应用程序的线程安全性。 众所周知,以不可变对象作为参数的静态方法是线程安全的,而可变对象不是。 如果我有一个实用程序方法可用于的某种操作,java.util.Date并且该方法接受的实例java.util.Date,则该方法将不是线程安全的。那么如何在不更改参数传递方式的情况下使其成为线程安全的呢? public class DateUtils { public static Date getNormalizeDate(Date date) { // some operations } } 课堂也是javax.faces.context.FacesContext可变的吗?将此类的实例传递给此类静态实用程序方法是否安全? 这个类的列表可能很长;这些实例的实例可以作为参数或不能作为参数传递。那么在编写此类实用程序类的代码时我们应牢记哪些要点?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.