蟒/ PyCharm:访问相同的类的另一个对象的保护构件(python / PyCharm: acc

2019-09-28 18:40发布

在我的课的方法MyHeader我访问私有财产_label另一个MyHeader对象new_header

class MyHeader:
    def __init__(self, label, n_elem):
        self._label = label
        self._n_elem = n_elem

    def check_header_update(self, new_header):
        # check that label is preserved
        if new_header._label != self._label:
            raise Exception("new header must have the same label")

在PyCharm,这导致语法高亮错误“ 访问类的保护成员_label”。

我试图指定的类型new_header参数:

    def check_header_update(self, new_header: MyHeader):

但这并不认可,并在运行时这导致错误“NameError:名字‘MyHeader’没有定义 ”。

任何想法如何访问受保护的成员在接受的方式?

Answer 1:

键入你的函数的正确方法是使用向前引用 ,并输入您的check_header_update像这样。 请注意,我还增加了返回类型,完整性:

def check_header_update(self, new_header: 'MyHeader') -> None:

为什么类型必须是一个字符串的原因是因为当你定义check_header_updateMyHeader还尚未完全确定,所以是不是你可以参考一下。

不过,我不记得这是否会最终解决问题还是没有。 如果没有,那我就可以:

  1. _label非私人通过移除下划线
  2. 做某种getter方法或使用属性 ,让其他人访问数据


文章来源: python / PyCharm: access to a protected member of another object of the same class