更新namedtuple()结构中的变量值

时间:2017-03-06 05:26:03

标签: python

我想在python中创建一个结构,就像在C中一样。我试过使用namedtuple()。但是,我无法更新我在自定义结构中描述的变量值。 以下是我宣布的方式:

from collections import namedtuple as nt
Struct = nt('Struct','all left right bottom top near far')

这就是我想用方法做的事情:

class codeClip:
    def compOutCode(x,y,z,xmin,xmax,ymin,ymax,zmin,zmax):
        code = Struct(0,0,0,0,0,0,0)  
        if(y > ymax):
            code.top = 1
            code.all += code.top
        elif(y < ymin):
            code.bottom = 1            
        return code

但是它给出了这个错误:

  

code.top = 1   AttributeError:无法设置属性

我该怎么办?对不起,我在python中相当新,所以仍然习惯了所有这些。

1 个答案:

答案 0 :(得分:3)

您可以使用_replace()方法。

您可以按如下方式更新值,而不是code.top = 1

code = code._replace(top = 1)

请注意,命名元组是不可变的,因此您无法操纵它们。如果你想要一些可变的东西,你可以使用recordtype

参考:https://stackoverflow.com/a/31253184/5352399