在python中从不同类中的类调用方法

在python中从不同类中的类调用方法,python,Python,假设我有以下代码: class class1(object): def __init__(self): #don't worry about this def parse(self, array): # do something with array class class2(object): def __init__(self): #don't worry about this def parse(s

假设我有以下代码:

class class1(object):
    def __init__(self):
        #don't worry about this 


    def parse(self, array):
        # do something with array

class class2(object):
    def __init__(self):
        #don't worry about this 


    def parse(self, array):
        # do something else with array
我希望能够从class2调用class1的解析,反之亦然。我知道用C++做这个可以很容易做
class1::parse(array)
如何在python中实现等效功能?

听起来您需要一个:

请注意,在这种情况下,您可以省略通常需要的
self
参数,因为
parse
不是在
class1
的特定实例上调用的函数

另一方面,如果您想要一个仍然绑定到其所有者类的方法,可以编写一个,其中第一个参数实际上是类对象:

class class1(object):
    @classmethod
    def parse(cls, array):
        ...

请注意,如果您觉得需要这样的staticmethods,这就强烈表明
class1
class2
应该是模块而不是类(或者至少
parse
staticmethods应该是函数)。
@staticmethod
应该避免(如果您不需要该类,也可以使用
@classmethod
)支持将其变为模块级函数。谢谢Thomas,我对模块不熟悉,我必须对此进行研究。@陌生人:我同意Thomas和Ignacio的观点,即通常模块级函数优于静态和类方法。但是,静态和类方法的优势在于,您可以在子类中重写它们。我以前在设计库时就这样做过,虽然不是很常见。class方法不应该将class(cls)作为第一个参数吗?这就是他们所说的“代码气味”。这看起来是一个糟糕的设计。为什么要这样做?
class class1(object):
    @classmethod
    def parse(cls, array):
        ...