如何从对象获取数据?

时间:2018-04-16 17:07:50

标签: python python-3.x

我必须获得一个类外的两个变量的值,但我没有任何运气。

我有这样的事情:

class AttentionDataPoint(DataPoint):
    def __init__(self, _dataValueBytes):
        DataPoint.__init__(self, _dataValueBytes)
        self.attentionValue = self._dataValueBytes[0] 

    def __str__(self):
        return "Attention Level: " + str(self.attentionValue)

class MeditationDataPoint(DataPoint):
    def __init__(self, _dataValueBytes):
        DataPoint.__init__(self, _dataValueBytes)
        self.meditationValue = self._dataValueBytes[0]

我尝试过:

Att = AttentionDataPoint()
Value = Att.__init__(attentionValue)

对于另一个相同的变量也一样,但python要求我找不到位置参数:_dataValueBytes但我真的无法解决问题。

数据点类是:

Class DataPoint:  
    def __init__(self, dataValueBytes):    
        self._dataValueBytes = dataValueBytes

2 个答案:

答案 0 :(得分:0)

当你写下来时:

Att = AttentionDataPoint()

您正在创建该类的实例,如果您查看该类的init函数,您将看到它需要一个参数才能初始化(DataValueBytes)。

当你创建一个实例时,它会自动调用init函数,我认为这就是你混淆的地方(你以后不需要明确地调用它)。

在初始化类之后,您需要做的就是访问变量:

Att.attentionValue

答案 1 :(得分:0)

假设attentionValue是您要传递给__init__的初始值,您可以这样称呼它:

att = AttentionDataPoint(data)

当您像这样调用类时,self会自动作为第一个位置参数传递。当您在第二个示例中直接调用__init__时,您只传递一个python指定给self的参数,因此它会抱怨缺少_dataValueBytes参数。

我无法说出data应该是什么。无论你传递的是什么都被映射到类中的_dataValueBytes,所以也许这个名字会给你一个预期的线索。

一旦你能够正确构建对象,获取数据非常简单,因为它只是简单地查找属性:

att_value = att.attentionValue