我在python中导入类没什么问题。我的工作流程就像这样
index.py
class Template:
def header():
def body():
def form():
def footer():
display.py
我想在header()
页面中调用函数body()
,footer ()
和display.py
。有人会在python中让我清楚这个问题。谢谢你的关心。
索引文件--- [Index.py] [1]
[1]:http://pastebin.com/qNB53KTE和display.py - “http://pastebin.com/vRsJumzq”
答案 0 :(得分:7)
你有什么尝试?以下是导入后使用Template
类方法的常规方法。
from index import Template
t = Template()
t.header()
t.body()
t.footer()
ETA:在index.py
文件的末尾(第99-105行),您正在调用上面定义的Template
类中的所有函数。这就是你看到重复的原因。
答案 1 :(得分:2)
修改:好的,根据您的代码,我知道您的问题是什么。
您正在呼叫以下内容:
## Calling all the functions of the class template with object (objx)
objx=HtmlTemplate()
objx.Header()
objx.Body()
objx.Form()
objx.Footer()
objx.CloseHtml()
然后在display.py
:
t = HtmlTemplate()
t.Header()
t.Body()
了解Body()
如何被调用两次?
作为一个脚注,你应该使用小写的方法名称,以及类的大写字母,就像你现在正在做的那样。这是一个很好的习俗。我非常推荐它。
您只需在display.py
中构建一次对象并调用所有方法。
答案 2 :(得分:2)
在索引文件的底部,创建一个HtmlTemplate
对象并调用其上的所有方法。由于此代码未包含在任何其他块中,因此在导入模块时会执行该代码。您需要将其删除或检查文件是否正在从命令行运行。
if __name__ == "__main__":
objx=HtmlTemplate()
objx.Header()
objx.Body()
objx.Form()
objx.Footer()
objx.CloseHtml()
答案 3 :(得分:1)
我不确定我是否理解正确,但我相信您正在询问如何在另一个脚本中导入template
类。您需要import
语句:
from index import template
foo = template()
foo.header()
foo.body()
foo.footer()
答案 4 :(得分:1)
index.py
的顶部和底部有以下代码:
cgitb.enable()
print 'Content-type: text/html\n\n'
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/msa.css\" >"
# [...]
## Calling all the functions of the class template with object (objx)
objx=HtmlTemplate()
# [...]
objx.CloseHtml()
每次import index
时都会调用此方法。
为了防止这种情况发生,请将其放在一个块中:
if __name__ == '__main__':
cgitb.enable()
print 'Content-type: text/html\n\n'
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/msa.css\" >"
# [...]
## Calling all the functions of the class template with object (objx)
objx=HtmlTemplate()
# [...]
objx.CloseHtml()
...或更好地保留了可以从其他地方调用的代码函数。
答案 5 :(得分:1)
以下解决方案对我有用:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}