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()
所以,我真的很想在 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()