IronPython中类实例与静态方法的连接

IronPython中类实例与静态方法的连接,python,ironpython,Python,Ironpython,我有一个关于在IronPython中通过类实例调用静态方法的问题。假设我有下一个静态方法: class SomeClass(object): def SomeMethod(number): return number + 10 SomeMethod = staticmethod(SomeMethod) 我可以通过类实例调用此方法,没有任何问题: instance = SomeClass() instance.SomeMethod(1) 但当我想通过静态方法从self

我有一个关于在IronPython中通过类实例调用静态方法的问题。假设我有下一个静态方法:

class SomeClass(object):
    def SomeMethod(number):
        return number + 10

SomeMethod = staticmethod(SomeMethod)
我可以通过类实例调用此方法,没有任何问题:

instance = SomeClass()
instance.SomeMethod(1)
但当我想通过静态方法从self对象返回一些值时,情况会怎样呢。考虑下一个案例:我在构造函数中初始化了这个类对象的字段,并希望从静态方法返回这个值。然后,我应该以某种方式提供对象和静态方法之间的依赖关系。我的班级是这样的:

class SomeClass(object):
    def SomeMethod(self, number):
        return self._numberValue + number + 10

SomeMethod = staticmethod(SomeMethod)

    def __init__(self):
        self._numberValue = 10
我尝试以完全相同的方式调用我的静态方法:

instance = SomeClass()
instance.SomeMethod(1)

但后来我得到了一个错误:“SomeMethod只接受给定的2个参数”。是否有可能在类对象和静态方法之间提供连接?或者这根本没有意义?

一个普通的非静态类方法会以自身隐式方式接收对实例的引用作为第一个参数

如果将方法定义为静态,则必须明确地传递实例:

instance = SomeClass()
instance.SomeMethod(instance, 1)
请注意,self不是一个神奇的关键词,它只是一个约定。您可以为该变量使用任何其他名称,如果这样更清楚:

def SomeMethod(inst, number):
    return inst._numberValue + number + 10
SomeMethod = staticmethod(SomeMethod)