这是一个类实例(又名对象):
In [2]: numpy.r_Out[2]: <numpy.lib.index_tricks.RClass at 0x1923710>
类是用于定义不同 类型 的构造-因为此类允许其自身的 实例 。每个实例可以具有属性(成员/实例变量和方法)。
类可以具有的__getitem__方法之一是方法,只要您将其追加[something,something...something]到实例名称后,就会调用该方法。在numpy.r_实例的情况下,该方法返回一个numpy数组。
以下面的类为例:
class myClass(object) def __getitem__(self,i)return i*2
查看以上类的这些输出:
In [1]: a = myClass()In [2]: a[3]Out[2]: 6In [3]: a[3,4]Out[3]: (3, 4, 3, 4)
我正在调用__getitem__myClass的方法(通过[]括号),并且该__getitem__方法正在返回(在这种情况下,列表的内容*2)- 不是 类/实例表现为函数-它是实例的__getitem__函数myClass,正在被呼叫。
最后一点,您会注意到要实例化myClass我必须做,a =myClass()而要RClass使用您的实例,numpy.r_这是因为numpy实例化RClass并将其绑定到名称numpy.r_本身。这是numpy源代码中的相关行。我认为这是非常丑陋和令人困惑的!
解决方法根据numpy.r_此处的numpy/ scipy文档,它是“不是函数,因此不带参数”。
如果不是功能,那么“功能”的正确术语是numpy.r_什么?