我認爲這幾乎是一個非常基本的問題,但我正在努力。我有2個python文件,一個用於我網站上的主要內容,另一個用於管理區域。你可以看到這兩個文件在這裏:python中是否有類語句的包含文件?
https://gist.github.com/670034
在這兩個文件我定義類,並在頂部導入必要的模塊,如果我在一個文件中改變我需要記住的其他文件來改變。有沒有辦法在一個文件中定義所有這些文件,然後將這兩個文件包含在內?
我確定有這樣一個簡單的方法,但我似乎無法找到如何去做。
感謝
湯姆
我認爲這幾乎是一個非常基本的問題,但我正在努力。我有2個python文件,一個用於我網站上的主要內容,另一個用於管理區域。你可以看到這兩個文件在這裏:python中是否有類語句的包含文件?
https://gist.github.com/670034
在這兩個文件我定義類,並在頂部導入必要的模塊,如果我在一個文件中改變我需要記住的其他文件來改變。有沒有辦法在一個文件中定義所有這些文件,然後將這兩個文件包含在內?
我確定有這樣一個簡單的方法,但我似乎無法找到如何去做。
感謝
湯姆
只需創建一個文件,如myimports.py
:
import cgi
import os
from google.appengine.ext.webapp import template
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
from google.appengine.api import memcache
from google.appengine.api import urlfetch
from google.appengine.datastore import entity_pb
然後,你可以這樣做:
from myimports import *
注意的是,雖然它可以節約空間,它不使其更具可讀性,你需要檢查的其他文件只是看你什麼進口。
創建新的模塊:
import some
class A:
pass
和進口模塊中的兩個文件:
import new_module
定義在一個單獨的文件中的類,import
它在另外兩個。
迴應什麼poke說,最好不要在集中的地方進行導入,因爲最終可能會失去對名稱空間中的內容的細粒度控制。我知道這並不能回答你的問題,但從長遠來看,這可能會有所幫助。
嗨拉茲,你能解釋一下爲什麼不推薦這種方法嗎?似乎毫不費力,就像將Google Analytics代碼放入網站範圍的包含文件中一樣?我失去了什麼控制權? – tomcritchlow 2010-11-17 09:07:22
'不要使用導入*'聽起來更容易記住。我這樣解釋:當你將手指指向它們時,你想知道對象來自哪裏 – 2010-11-17 09:10:13
好吧,如果你的項目中只有一些文件,那麼可能是沒有道理的,但是在一個更大的項目中它可以開始難以跟蹤正在導入的內容,因此可能導致難以追查的錯誤。 – Raz 2010-11-17 09:12:02
謝謝戳!這正是我正在尋找的東西,我覺得它很簡單,但很難得到釘牢。謝謝。 – tomcritchlow 2010-11-17 09:06:36
很高興能夠提供幫助。順便說一句。點擊答案旁邊的勾號以接受它作爲問題的答案並將問題標記爲已解決。 – poke 2010-11-17 16:35:33