Python:如何扩展类?

时间:2015-02-26 23:26:56

标签: python inheritance extends

所以,我真的想在pandas.core.frame.DataFrame添加一些新方法。例如,我想要一个名为.idx的方法:

pandas.core.frame.DataFrame.idx(self, rows, cols):
    return self.iloc[rows].loc[cols]

这可能吗?我不确定语法应该是什么 - 类已经存在于库中,因此我不能将该函数放在类定义中。

2 个答案:

答案 0 :(得分:2)

你能不能扩展你的DataFrame,继承它的所有功能,然后自由地定义你自己的功能?

在python中它看起来像:

class ExtendedDataFrame(DataFrame):
    ...

然后,只需使用ExtendedDataFrame的实例,而不是DataFrame,以获得额外的好处。

我还建议您查看this tutorial covering inheritance.

如果您试图覆盖超级(父级)类的功能,请务必查看您的super()的python实现版本。

Here是一个SO问题,其中包含有关super()的详细信息,因为我注意到我仅仅简要介绍了super()所涵盖的教程,并且在评论中也是如此。< / p>

答案 1 :(得分:1)

这在Python中实际上非常简单。虽然我建议继承DataFrame,但正如MeetTitan所回答的那样,有时候这会无效,但你可以添加如下函数:

class Abc(object):
    pass

def new_funct(self):
    print 1234

Abc.instance_funct = new_funct
a = Abc()
a.instance_funct()