Python:如何扩展class?

Python: How to extend a class?

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

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

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

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

在 python 中看起来像:

class ExtendedDataFrame(DataFrame):
    ...

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

我还建议看一下 this tutorial covering inheritance.

另外,如果您试图覆盖超级(父)class 的功能,请务必检查您的 python 实现 super() 的版本。 =19=]

Here 是一个 SO 问题,其中包含关于 super() 的重要信息,因为我注意到我链接的教程仅简要介绍了 super(),并且在评论中也不少。

这在 Python 中实际上非常容易。虽然我建议从 DataFrame 继承,但正如 MeetTitan 所回答的那样,有时这行不通,但您可以添加这样的功能:

class Abc(object):
    pass

def new_funct(self):
    print 1234

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