python - Python 面向对象中的数组

标签 python arrays object numpy

我是面向对象编程的新手。我正在审查代码,有一部分我很难理解。如果您能帮助我,我将不胜感激。

我有一个代码,其中有 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/

相关文章:

java - Blue J,我的 listMembers 方法没有从我的数组列表中打印出正确的数据

javascript - 如何不通过整个响应映射对象

python - 如何在 matplotlib 的注释中设置箭头的起点?

python - 在Python中使简单的绘图变得平滑

php - 切换关联数组中的两个项目

c - 数组的洗牌算法

javascript - Js lodash 每次都返回相同的样本

python - 试图在二叉树中查找节点

python - Python 中模运算符的逆运算

如果在值中找到 var,则 PHP 从数组中删除值