在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):
...