如何从对象中获取数据?类外部获取类成员变量值的技术问题
解决类外部无法获取成员变量的问题
首先我先把你没写完的MeditationDataPoint类补全(假设和AttentionDataPoint逻辑一致):
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] # 补全缺失的代码 def __str__(self): return "Meditation Level: " + str(self.meditationValue)
要在类外部获取这两个成员变量,核心是先正确创建类的实例对象,再通过对象直接访问变量就行,举个实际使用的例子:
# 准备示例字节数据(根据你的实际场景替换) sample_data = b'\x08' # 对应十进制值8 # 创建注意力数据实例并访问变量 attention_instance = AttentionDataPoint(sample_data) print(attention_instance.attentionValue) # 输出:8 # 创建冥想数据实例并访问变量 meditation_instance = MeditationDataPoint(sample_data) print(meditation_instance.meditationValue) # 输出:8
你可能踩坑的几个常见原因:
- 直接用类名访问实例变量:比如写
AttentionDataPoint.attentionValue会报错,因为attentionValue是绑定到实例的变量,必须通过具体的对象访问,不能直接用类名。 - 父类初始化有问题:如果
DataPoint的__init__方法没有把传入的_dataValueBytes保存为实例变量self._dataValueBytes,那你的子类里根本拿不到这个值,自然没法赋值给attentionValue或meditationValue,得检查父类的实现。 - 变量名拼写错误:比如你代码里
MeditationDataPoint写的self._dat...明显是截断了,要是实际代码里拼写错了_dataValueBytes,也会导致变量赋值失败。 - 实例化参数不对:如果传入的
_dataValueBytes是空的、长度不够,或者不是字节类型,也会导致变量值异常或者直接报错。
如果还是搞不定,可以把你尝试访问变量的代码贴出来,能更精准地帮你排查问题~
内容的提问来源于stack exchange,提问作者Marzio Ranno
相关产品推荐
相关产品推荐

