无括号解释的Numpy函数/方法

2024-04-25 19:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是想把我的大脑集中在这里的语法上:

# some data
import numpy as np
x = linspace(0, 1, 100)

x.sum()    # works with brackets
> 50.0

x.shape    # works without brackets
> (100,)

x.shape()  # fails with brackets
> TypeError

为什么有些方法/函数有括号,而有些没有?在


Tags: importnumpydataaswithnp语法some
1条回答
网友
1楼 · 发布于 2024-04-25 19:27:32

当您访问实例的属性时,实际上是在访问描述符。常见的情况有三种:

  • 描述符返回一个像x.sum这样的函数,它返回一个绑定函数。绑定,因为该函数的第一个参数将是x。显然,您需要调用()该函数来给出一个结果。

  • 有一些类和实例属性,它们只返回保存在x.__dict__或{}中的值。你不需要打电话就可以得到这些。然而x.shape不是其中之一!

  • properties,当你访问这些文件时,它会隐式地调用你的类的一个方法。在一般属性中,比如x.something,相当于x.__class__.something.fget(x)。看起来很奇怪,但很管用。。。某种程度上。这里重要的一点是,通常不需要直接调用它(),因为您只需执行x.something


但这是技术性的,也许更简单的解释最好记住:

  • sum是一种方法。应调用方法。要调用函数或方法,您需要()。在
  • shape是一个属性(但也可以是一个属性),您不需要调用这些属性!它也可以返回一个函数,但在本例中,它返回一个tuple并且不能调用tuple实例。在

相关问题 更多 >