python-3.x - python3 global variable



在初始化時,Python3類實例是否可以被強制為全局對象? (1)

即使全局的Python對象往往是壞的,我或多或少的被迫使用模塊curses 。 我目前有這樣的:

class Window:
    def __init__(self, title, h, w, y, x):
        self.window = curses.newwin(h, w, y, x)
        self.window.box()
        self.window.hline(2, 1, curses.ACS_HLINE, w-2)
        self.window.addstr(1, 2, title)
        self.window.refresh()

global top_win
top_win = Window('Top window', 6, 32, 3, 6)

我想知道是否有可能通過添加一些類的定義或初始化來擺脫global線?

class Window:
    def __init__(self, title, h, w, y, x):
        # Some global self magic
        self.window = curses.newwin(h, w, y, x)
        self.window.box()
        self.window.hline(2, 1, curses.ACS_HLINE, w-2)
        self.window.addstr(1, 2, title)
        self.window.refresh()

top_win = Window('Top window', 6, 32, 3, 6)

全球班級模式

儘管每當看到“ global這個詞,我都會反思,但是我應用了同樣具有爭議的 全球化的模式來解決我的問題。

class win:
    pass

class Window:
    def __init__(self, title, h, w, y, x):
        self.window = curses.newwin(h, w, y, x)
        self.window.box()
        self.window.hline(2, 1, curses.ACS_HLINE, w-2)
        self.window.addstr(1, 2, title)
        self.window.refresh()

win.top = Window('Top window', 6, 32, 3, 6)

這導致win.top可以在我的Python腳本中的任何地方訪問,就像任何global變量一樣,但是以更受控制的方式更好,更整潔。

這對於在main()例程中定義新的curses窗口非常方便,該例程通常包含在curses.wrapper(main) 。 點擊這個鏈接獲得一個完整的Python3 curses示例 。





global-variables