在python中构建类对象列表时出现问题

在python中构建类对象列表时出现问题,python,Python,我对python还是个新手,在这方面我已经玩了一段时间了,如果有人能指出我的错误,我将不胜感激 基本上,我试图构建一个包含许多不同对象的列表,每个对象都有几个属性 我的尝试被简化,如下所示,基本上我为这个对象构建了一个类,包含几个值,然后尝试构建一个列表来包含这些对象-它似乎没有成功 如有任何建议,将不胜感激 class TagData(object): def __init__(self): self.tag = [] self.val = []

我对python还是个新手,在这方面我已经玩了一段时间了,如果有人能指出我的错误,我将不胜感激

基本上,我试图构建一个包含许多不同对象的列表,每个对象都有几个属性

我的尝试被简化,如下所示,基本上我为这个对象构建了一个类,包含几个值,然后尝试构建一个列表来包含这些对象-它似乎没有成功

如有任何建议,将不胜感激

class TagData(object):
    def __init__(self):
        self.tag = []
        self.val = []
        self.rel = []
        self.database = []
        self.description = []

tagvalue='xxx'
tagList=[]
tagList.append(TagData.tag(tagvalue))
tagList.append(TagData.val(val1))
目前,我收到一个错误,说TagData没有属性“tag”


谢谢,

[]
声明了一个列表,所以您的成员变量tag、val、rel等都是列表值,但听起来它们真的想要成为标量?因此,请在构造函数中尝试以下操作:

def __init__(self):
    self.tag = None
    self.val = None
    # etc
然后,您可以执行以下操作来创建对象:

td = TagData()
td.tag = tagvalue
td.val = 'foo'
tagList.append(td)
如果希望能够在构造函数调用中指定tag和val,则需要添加构造函数参数。这里有一个方法:

def __init__(self, tag=None, val=None):
    self.tag = tag
    self.val = val
    # etc
然后:


直接的问题是您没有实例化
TagData
\uuuu init\uuuu
中的属性是实例属性(注意用于为实例设置它们的
self.
前缀),而不是类属性。请使用由此创建的
TagData
实例尝试相同的代码:
TagData()


更广泛的问题是我不太明白你想做什么。没有这些,你很难更好地回答你的问题。为您的问题添加更多上下文会有所帮助。

首先,您需要创建TagData的实例,如下所示:

TagData()
这就是为什么要获取AttributeError,因为当您使用TagData.tag(…)时,实际上是在尝试调用TagData类对象的tag方法,而不是设置特定实例的属性

接下来,您需要指定一个属性或创建一个方法来设置它。例如,您可以向类中添加如下方法:

def addVal(self,value):
    self.val.append(value)
然后:

a=TagData()
a.addVal('value')
tagList.append(a)
或者您可以这样做(如果您不希望定义getter/setter):


不要在一行中完成所有这些操作,因为当您调用addVal时,它将返回None,然后您将在列表中添加None,而不是对象。

您的缩进看起来是错误的。你贴的时候有没有弄脏?否则,我看不出这怎么可能在解释器上运行。感谢大家的评论-我在类中添加了一个addVal,并做了一些其他更改,它工作得非常好!
a=TagData()
a.addVal('value')
tagList.append(a)
a=TagData()
a.val.append('text')
tagList.append(a)