Pylint W0212受保护访问

2024-06-01 14:50:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,用一个下划线作为前缀表示不应在类之外访问成员。这似乎是基于类的,比如JavaC++

然而,pylint似乎在每个对象的基础上强制执行这个约定。有没有一种方法可以在不诉诸#pylint: disable=protected-access的情况下允许每类访问?

class A:
    def __init__(self):
        self._b = 5

    def __eq__(self, other):
        return self._b == other._b

结果:

pylint a.py
a.py:6: W0212(protected-access) Access to a protected member _b of a client class

Pylint描述消息here


Tags: 对象方法pyselfaccessdef成员java
2条回答

pylint不知道other是哪种类型(应该如何,您可以将A的实例与所有内容进行比较),因此发出警告。我认为没有办法解除警告。

您可以仅对该行禁用警告,并在该行后面附加# pylint: disable=W0212

克里斯蒂安·盖尔说得对,你为什么会犯错误,以及如何消除错误。

不过,我鼓励您考虑更改代码:pylint告诉您一些重要的事情。从您的示例代码看来,您希望使用eq比较类A的对象与类A的其他对象,但您的示例不能保证调用方不会尝试A() == C()。当您检查Circle()._radius == Sphere._radius时返回True可能会导致问题。

有关如何处理此问题的讨论,请参见this stackoverflow thread

相关问题 更多 >