我在这里可能使用了错误的术语,但是我正在寻找一个关于在对象上调用的函数(即方法)与对象本身的属性之间的区别的解释。
采用以下df:
df = pd.DataFrame({'a':[4, 5, 6, 7],
'b':[3, 2, 5, 4]})
您可以在df上调用sum()
方法/函数,并且可以在df上调用columns
属性。在链接方法与使用.
调用属性之间,我可能会感到困惑。
df.sum()
df.columns
答案 0 :(得分:0)
它们是相同的。方法几乎只是 happen 属于function
类型或任何其他可运行类型的属性。如果你这样做
>>> f = df.sum
它会很好地工作。如果您随后检查类型,则会看到
>>> type(f)
<type 'instancemethod'>
或类似的内容。您可以将该类型的任何对象调用为函数,这就是为什么可以执行df.sum()
的原因:首先,它找到恰好是函数的df
的属性,然后对其进行调用。>
答案 1 :(得分:0)
您不能“调用” DataFrame的df.columns
部分。它是DataFrame的数据部分,您可以“引用”它。 df.sum()
您可以“调用”,因为sum()
是DataFrame的可执行部分。
棘手的一点是(我试图在这里避免使用歧义的语言)是DataFrame具有以下两种类型的东西:数据部分和代码部分。它们都可以更改,被继承等。但是它们确实不同:您不能“调用”列,并且(通常)您不引用sum()
。