Quiero crear una estructura, como lo hacemos en C, en python. He intentado usar namedtuple() para esto. Sin embargo, no puedo actualizar los valores de las variables que he descrito dentro de la estructura personalizada. Así es como lo declaré:
from collections import namedtuple as nt Struct = nt('Struct','all left right bottom top near far')Y esto es lo que estoy tratando de hacer en un método:
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 codeSin embargo, está dando este error:
code.top = 1 AttributeError: no se puede establecer el atributo
¿Qué tengo que hacer? Perdóneme, soy bastante nuevo en Python, así que todavía me estoy acostumbrando a todo esto.
Puede usar el método _replace() .
En lugar de code.top = 1 , puede actualizar los valores de la siguiente manera.
code = code._replace(top = 1) Tenga en cuenta que las tuplas con nombre son inmutables, por lo que no puede manipularlas. Si quieres algo mutable, puedes usar recordtype .
Referencia: https://stackoverflow.com/a/31253184/5352399