Estoy tratando de implementar la siguiente estructura en Python usando clases anidadas:
class class1: a1 = 1 class class2: a2 = 2 class class3: a3 = 3 print(class1.a1) #prints 1 print(class1.class2.a2) #prints 2 print(class1.class2.class3.a3) #prints 3Hasta ahora, funciona según lo previsto. Pero cuando cambio "a2 = 2" a "a2 = class1.a1 + 1", aparece el error "NameError: el nombre 'class1' no está definido"
class class1: a1 = 1 class class2: a2 = class1.a1 + 1 class class3: a3 = 3 print(class1.a1) print(class1.class2.a2) print(class1.class2.class3.a3) NameError: name 'class1' is not defined¿Cuál es la forma correcta de hacer esto? Sé que las clases anidadas generalmente se evitan en Python, pero esta notación de puntos (class1.class2.a2) es muy importante para el proyecto en el que estoy trabajando.
Editar: para poner las cosas en contexto, lo que estoy tratando de hacer es analizar un archivo XML en un objeto para poder acceder a sus campos. Tiene la siguiente estructura:
<CTe xmlns="http://www.portalfiscal.inf.br/cte"> <infCte versao="3.00"> <compl> <xCaracAd>Normal</xCaracAd> <xObs>DOC TRANSP: 35576713</xObs> <ObsCont xCampo="DT"> <xTexto>35576713</xTexto> </ObsCont> </compl>Entonces, por ejemplo, quiero poder extraer el campo "xTexto" usando infCte.compl.ObsCont.xTexto.
De hecho, también tengo la opción de JavaScript para este proyecto, por lo que también se agradecerían soluciones en este lenguaje.