最近的幾個弱點,我在玩Web.py框架。隨着我的應用程序變得越來越大,我想重構源代碼並將代碼片段放在不同的類中。現在,如果我需要在不同的web.py類中使用它們,我不知道應該在哪裏創建對象實例。讓我們假設,我的源代碼是這樣的:web.py:避免全局實例?
import web
import myclass
urls = (
'/', 'index',
'/test', 'test'
)
#should i make my instance global...
my = myclass.myClass()
class test:
def __init__(self):
#...or should i make my instance local: my = myclass.myClass()
pass
def GET(self):
item = my.getItem()
return item
def POST(self):
pass
class index:
def __init__(self):
#...or should i make my instance local: my = myclass.myClass()
pass
def GET(self):
date = my.getDate()
return date
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
現在,我要訪問的方法getItem()
和getDate()
(屬於實例my
),如果在我的網頁瀏覽器相應的站點被稱爲。我現在的問題是:如果我把它變成本地的,我應該讓這個實例成爲全局還是更好?我真的不喜歡全局實例,但我沒有看到任何其他方式使其成爲全局實例。當然,創建一個本地實例是可能的,但是,每次頁面加載時,都會創建一個新實例,對吧?通常情況下,這不會是一個問題,但myclass
訪問一個串行端口,所以我需要確保,只有一個實例被創建。
我是否錯過了某些東西或者是全局實例是唯一可行的解決方案?
我相信它會更好地成爲一個全局對象。 – thefourtheye