方法和属性python之间的区别?

时间:2018-08-01 14:54:59

标签: python

我在这里可能使用了错误的术语,但是我正在寻找一个关于在对象上调用的函数(即方法)与对象本身的属性之间的区别的解释。

采用以下df:

df = pd.DataFrame({'a':[4, 5, 6, 7],
                   'b':[3, 2, 5, 4]})

您可以在df上调用sum()方法/函数,并且可以在df上调用columns属性。在链接方法与使用.调用属性之间,我可能会感到困惑。

df.sum()
df.columns

2 个答案:

答案 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()