我想要一个方法每5分钟执行一次,我实现了每当ruby(克朗)。 但它不起作用。 我认为我的方法是不可访问的。 我想要执行的方法位于一个类中。 我想我必须使这个方法是静态的,所以我可以通过MyClass.MyMethod访问它。 但是我找不到正确的语法,或者我正在寻找错误的地方。 Schedule.rb every 5.minutes do runner "Ping.checkPings" end Ping.rb def checkPings gate = Net::Ping::External.new("10.10.1.1") @monitor_ping = Ping.new() if gate.ping? MonitorPing.WAN = true else MonitorPing.WAN = false end @monitor_ping.save end
在我的Python应用程序中,我想创build一个既是staticmethod又是abc.abstractmethod方法的方法。 我该怎么做呢? 我尝试应用两个装饰器,但它不工作。 如果我这样做: import abc class C(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod @staticmethod def my_function(): pass 我得到一个exception*,如果我这样做: 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__'
我正在构build一个重用和简单的ORM库; 除了被一个愚蠢的inheritance限制所困住之外,一切都很好。 请考虑下面的代码: 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: string(9) "BaseModel" $class […]
为什么ReSharper抱怨当一个方法可以变成静态的,但不是? 是因为只有一个静态方法的实例被创build(在types上),从而节省性能?
当我尝试从类的主体中使用静态方法,并使用内置静态方法函数作为装饰器来定义静态方法时,如下所示: class Klass(object): @staticmethod # use as decorator def _stat_func(): return 42 _ANS = _stat_func() # call the staticmethod def method(self): ret = Klass._stat_func() + Klass._ANS return ret 我得到以下错误: Traceback (most recent call last):<br> File "call_staticmethod.py", line 1, in <module> class Klass(object): File "call_staticmethod.py", line 7, in Klass _ANS = _stat_func() TypeError: 'staticmethod' object is […]
我的问题是关于静态方法的性能特征与实例方法及其可伸缩性。 假设这种情况下所有的类定义都在一个程序集中,并且需要多个离散的指针types。 考虑: 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 input) { // Some […]
有一个简单的愚蠢的问题,困扰着我,并在我的脑海里提出了几个论点。 我想抛出所有关于下面的问题的怀疑。 class Clstest{ public static String testStaticMethod(String inFileStr) { // section 0 // section 1 // do something with inFileStr // section 2 // section 3 return inFileStr; } } 我们假设有五个线程同时执行对Clstest.testStaticMethod("arg-n")的调用。 线程1调用Clstest.testStaticMethod("arg-1") 。 当线程1在部分1中时,线程2调用Clstest.testStaticMethod("arg-2") 。 那么线程1会发生什么? 它会进入睡眠状态吗? 当线程1有机会时,它会从第1节暂停的地方恢复执行。 当有一个Clstest.testStaticMethod并且在所有五个线程之间共享相同的Clstest.testStaticMethod时,会发生什么? 有没有可能互换由多个线程发送的inFileStr ?
我正在写一个课程的一些代码的解释,并不小心使用的method和function的话交替使用。 我决定回去修改措辞,但是在我的理解中遇到了一个漏洞。 据我所知,一个子程序是一个function如果它不作用于一个类的实例(其作用仅限于其明确的input/输出),是一个method如果它在一个类的实例(它可能会对不纯的实例产生副作用)。 这里有一个很好的讨论这个话题。 请注意,通过接受的答案的定义,一个静态method实际上应该是一个函数,因为一个实例永远不会被隐式传递,并且它不能访问任何实例的成员。 有了这个心态,不应该静态methods实际上是function? 根据他们的定义,他们不会针对某个阶层的特定事例采取行动; 他们只因为关系而与class级“捆绑”。 我已经看到了一些看起来很好看的网站,它们把静态子程序称为“方法”( Oracle , Fredosaurus , ProgrammingSimplified ),所以他们都忽略了术语,或者我错过了一些东西(我的猜测是后者) 。 我想确保我使用正确的措辞。 任何人都可以清除这个?
比方说,我有一个类被devise来实例化。 我有几个私人的“帮手”方法在类中,不需要访问任何类成员,并完全操作自己的参数,返回结果。 public class Example { private Something member; public double compute() { double total = 0; total += computeOne(member); total += computeMore(member); return total; } private double computeOne(Something arg) { … } private double computeMore(Something arg) {… } } 是否有任何特定的原因指定computeOne和computeMore作为静态方法 – 或任何特定的原因不? 将它们保持为非静态是最容易的,尽pipe它们当然可以是静态的而不会造成任何问题。
我有一个类,必须有一些静态方法。 在这些静态方法中,我需要调用方法getClass()来进行以下调用: public static void startMusic() { URL songPath = getClass().getClassLoader().getResource("background.midi"); } 但是Eclipse告诉我: Cannot make a static reference to the non-static method getClass() from the type Object 什么是解决这个编译时错误的适当方法?