我认为这几乎是一个非常基本的问题,但我正在努力。我有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