我是面向对象编程的新手。我正在审查代码,有一部分我很难理解。如果您能帮助我,我将不胜感激。
我有一个代码,其中有 numpy 数组,然后似乎“数组”被用作 numpy 数组的属性或方法,但我不确定它是如何工作的。以下是我的语法:
self.PromotionIdData.array()[self.ID,t] = ...
PromotionIdData 是一个二维 numpy 数组。 但我无法为自己生成类似的语法。这是我的代码:
import numpy as np
from array import *
class test:
def __init__ (self):
self.price=np.array([10,20,30])
self.cost=20
self.volum=2
a=test()
print getattr(a,'price').array[1]
但是我的代码不起作用。我收到错误消息,指示“数组”不是属性。
谢谢
最佳答案
您不需要导入array
,因为它是一个numpy类,并且您已经导入了numpy(实际上您使用np.array
调用数组)。
一旦有了 numpy 数组对象,您就可以使用方括号访问元素,而无需任何附加注释:
a = np.array([1,2,3,4])
print a[1]
此外,要访问类的属性,您只需要使用点语法,我认为您的测试应该如下所示:
print a.price[1]
(OP澄清后编辑)
如果您希望能够在类中调用array()
,您需要定义一个返回所需属性的数组方法:
class test():
def __init__(self):
self.price=np.array([10,20,30])
self.cost=20
self.volum=2
def array(self):
return self.price
然后您可以执行a.array()[1]
(请注意,您不再需要显式指示价格属性)。对于这种类型的结构,您可能需要查看 getters and setters 的概念。
关于python - Python 面向对象中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20250583/