在 Python 中键入提示保护/私有类的正确方法?

问题描述 投票:0回答:1

我这里有一个示例类,我想使用 lxml 来解析 xml 文件。

class XMLParser:

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

但是,当我使用此类型提示时,PyCharm 抱怨无法访问受保护的成员 _Element。有没有更正确的方法来注释这样的变量?当我输入检查时,_Element 类是正确的。

感谢您的帮助!

python annotations lxml type-hinting
1个回答
0
投票

OP 的最佳方法是忽略

PyCharm
警告。以我几年lxml类型注解的经验,“public”/“private”-ness和类名没有确定的关系——一些用户无法构造的私有结构具有类公共类的名称(公开导出且没有下划线,如
DocInfo
)。

虽然

etree._Element
貌似被作者声明为“私有”,但lxml用户在函数签名中根本无法避免它。
_ElementTree
_Comment
等其他“私人”课程也是如此

© www.soinside.com 2019 - 2024. All rights reserved.