我正在阅读一些 wxPython 代码来学习一些 Python。请记住,我真的是一个初学者,所以我的问题对你来说很明显,但对我来说,这很神秘,它可能会教会我很多东西来完全理解这个问题。
这里的代码:
class MainFrame(wx.Frame):
TITLE = "Frame"
POSITION = wx.DefaultPosition
SIZE = wx.DefaultSize
STYLE = wx.DEFAULT_FRAME_STYLE
LAYOUT_MANAGER = wx.GridBagSizer()
def __init__(
self,
parent = None,
id = wx.ID_ANY,
title = TITLE,
pos = POSITION,
size = SIZE,
style = STYLE,
name = wx.FrameNameStr
):
super(MainFrame, self).__init__(parent, id, title, pos, size, style,
name)
self.SetSizerAndFit(self.LAYOUT_MANAGER)
self.panel = MainPanel(parent=self)
NameError: global name 'LAYOUT_MANAGER' is not defined
我的问题很简单:如果我按如下方式引用 LAYOUT_MANAGER为什么会得到:
self.SetSizerAndFit(LAYOUT_MANAGER)
删除self
引用,即。
为什么我很困惑?仅仅因为在此方法中,对 , 等字段的引用POSITION
没有SIZE
任何前缀self
,但如果我使用字段 LAYOUT_MANAGER 作为方法的参数,则需要引用SetSizerAndFit
...
是什么赋予了?!
我可能忘记了这里语言最自然的范围/可见性规则..但鉴于我知道的很少,能够写size = SIZE
(没有self.
)但不能写只是没有意义LAYOUT_MANAGER
,并且要求self.LAYOUT_MANAGER
? !