Python - "add property for the field" 是做什么的?

Python - what does "add property for the field" do?

我正在 pycharm 开发一个 python 程序。在我的代码的这一行下:

rut = Tk()
rut.tk.call('wm', 'iconphoto', rut._w, PhotoImage(file=icon_file))

我在 'rut._w' 上收到警告说:

access to a protected member _w of a class

当我按下 ctrl + enter 时,它会给我一个选项:

add property for the field

当我点击它时,它会将行更改为:

rut.tk.call('wm', 'iconphoto', rut.w, PhotoImage(file=icon_file))

但我知道这还不是全部,因为如果我手动更改名称,我将得到:

AttributeError: '_tkinter.tkapp' object has no attribute 'w'

那么这里发生了什么? _w 是什么意思,.w 是什么意思,为字段添加 属性 是什么意思,它实际上是如何完成的?

请注意,Tk 是从不在我的项目文件中的 tkinter 包导入的,所以我想 pycharm 无法编辑它。

__str__ method defined for Tk returns self._w是一个getter为私有属性.

您可以使用:

rut.tk.call('wm', 'iconphoto', str(rut), PhotoImage(file=icon_file))


Pycharm 所做的是将其添加到 Tkinter class。这很糟糕,因为您的应用程序保证可以在您的机器上运行,但不能在 Tkinker class 未打补丁的其他机器上运行。

Cmd + ClickCtrl + Click(取决于你的平台)Tk()rut = Tk()打开class定义。您会在最后看到添加的内容。

@property
def w(self):
    return self._w