es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la forma correcta de indicar clases protegidas / privadas en Python?

Tengo aquí una clase de muestra que me gustaría usar lxml para analizar archivos XML.

class XMLParser:
def __init__(self, path: str):
    self.root: etree._Element | None = None

Sin embargo, PyCharm se queja sobre el acceso a un miembro protegido _Element cuando uso esta indicación de tipo. ¿Existe una forma más correcta de anotar esta variable? La clase _Element es la correcta cuando realizo la verificación de tipos.

¡Gracias por tu ayuda!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, existe una forma correcta de hacer anotaciones en la variable sin que PyCharm se queje de acceder a un miembro protegido. En lugar de importar directamente la clase _Element de lxml.etree, debes importarla del módulo typing. Esto permitirá que PyCharm reconozca correctamente el tipo sin ningún problema.

    Aquí tienes un ejemplo de cómo importar y usar correctamente la clase _Element:

    from lxml.etree import Element as LxmlElement
    from typing import Optional
    
    class XMLParser:
        def __init__(self, path: str):
            self.root: Optional[LxmlElement] = None
    

    En este ejemplo, hemos importado Element de lxml.etree como LxmlElement, y luego lo hemos utilizado en la sugerencia de tipo con el envoltorio Optional de typing. Esto debería resolver el problema que estás encontrando con PyCharm.

Comments are closed.