2010-07-22 63 views
4

比方说,我有这样的代码:调用不同类从一个类的方法在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(self, array): 
     # do something else with array 

我希望能够从Class2中,反之亦然调用类class1的解析。我知道用c + +这可以很容易地做到这一点

class1::parse(array) 

我将如何做python的等效?

+4

这是他们所谓的一种“代码味道”。它看起来像一个糟糕的设计。什么是想要这样做的原因? – 2010-07-22 19:47:21

回答

4

这听起来像你想有一个static method

class class1(object): 
    @staticmethod 
    def parse(array): 
     ... 

注意,在这种情况下,您离开关通常要求的self参数,因为parse不是叫上class1特定实例功能。

在另一方面,如果你想它仍然依赖于它的主人类中的方法,你可以写一个class method,其中第一个参数实际上是类对象:

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

是的,谢谢,这看起来像会起作用。 – Swiss 2010-07-22 18:22:34

+4

需要注意的是,如果您觉得这样的staticmethods的需要,这是一个强烈的暗示'class1'和'class2'应的模块,而不是阶级(或至少使用'parse' staticmethods应该是功能,而不是。) – 2010-07-22 18:28:17

+1

'@staticmethod '应该避免(如果你不需要这个类的话'@ classmethod')有利于使它成为一个模块级的函数。 – 2010-07-22 18:28:56

相关问题