Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “如何抑制警告”;访问受保护成员“;用什么方法?_Python_Pycharm_Encapsulation - Fatal编程技术网

Python “如何抑制警告”;访问受保护成员“;用什么方法?

Python “如何抑制警告”;访问受保护成员“;用什么方法?,python,pycharm,encapsulation,Python,Pycharm,Encapsulation,我有课 class A(object): def __init__(self, data): self._data = data def _equals(self, other): return self._data == other._data Pycharm不喜欢我访问其他数据,因为它是私有的 “访问受保护成员” 这对我来说没有意义,因为访问是从类内部进行的 如何抑制此警告或编写正确的代码?如果您真的需要它,如's\u asdict(),答案

我有课

class A(object):
    def __init__(self, data):
        self._data = data
    def _equals(self, other):
        return self._data == other._data
Pycharm不喜欢我访问其他数据,因为它是私有的

“访问受保护成员”

这对我来说没有意义,因为访问是从类内部进行的


如何抑制此警告或编写正确的代码?

如果您真的需要它,如's
\u asdict()
,答案是:

Python 3.5+答案(引入了类型提示): 使用@Giacomo Alzetta建议的类型提示,并允许使用来自未来的导入注释的
对类本身进行类型提示

没有必要再攻击PyCharm或写难看的评论


正如@jornsharpe通过docstrings指出的那样。

我不会在这里发布这篇文章,因为我支持的Python 2正在失去支持。

它在
self
的类中,但即使它有
\u data
属性,也不能保证
other
也是
A
。例如,你读过吗?你是否知道你可以重写Python中的
=
操作符(这样做的钩子是
\uuuueq\uuueq
,而不是
\uequals
)?它没有说“可能不是正确的类型”,而是说你正在访问一个私有成员。Python是duck类型的,从解释器的角度来看,
other
是否是
A
并不重要,只要它具有
\u data
属性即可。我的观点是,这可能不是
other
类中的访问权限。您应该检查它们的类型。。。如果添加
如果不存在(其他,A):返回false
则不会得到警告。也许只需添加
,其他:一个
注释就足够了。。。。PyCharm应该足够聪明,可以使用它们来推断类型。
class A(object):
    def __init__(self, data):
        self._data = data
    def _equals(self, other):
        # noinspection PyProtectedMember
        return self._data == other._data
from __future__ import annotations


class A(object):
    def __init__(self, data):
        self._data = data

    def _equals(self, other: A):
        return self._data == other._data