Pythonを学ぶためにwxPythonコードを読んでいます。私は本当に初心者なので、私の質問はあなたには明らかですが、私には不可解であり、質問を完全に理解するために多くのことを教えてくれることを覚えておいてください.
ここにコード:
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
( no なしでself.
) 書くことができるが、 just LAYOUT_MANAGER
、および require self.LAYOUT_MANAGER
?を書くことができないことは意味がありません。 !