从另一个文件导入类及其函数
我在用Python导入类的时候遇到了一点小问题。我的工作流程是这样的:
index.py
class Template:
def header():
def body():
def form():
def footer():
display.py
我想在我的 display.py
文件中调用 header()
、body()
和 footer()
这几个函数。有没有人能帮我解释一下这个在Python中的问题呢?谢谢大家的关注。
索引文件--- [Index.py][1]
[1]: http://pastebin.com/qNB53KTE 和 display.py -- "http://pastebin.com/vRsJumzq"
6 个回答
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
中构造对象一次,然后调用所有的方法就可以了。
8
你尝试过什么呢?下面是导入后使用Template
类方法的正常方式。
from index import Template
t = Template()
t.header()
t.body()
t.footer()
补充说明:在你的index.py
文件的最后部分(第99到105行),你调用了之前定义的Template
类中的所有函数。这就是你看到重复的原因。
2
在你的索引文件底部,你创建了一个 HtmlTemplate
对象,并调用了它的所有方法。因为这段代码没有放在任何其他的代码块里,所以当你导入这个模块时,它就会被执行。你要么需要把它删掉,要么检查一下这个文件是否是从命令行运行的。
if __name__ == "__main__":
objx=HtmlTemplate()
objx.Header()
objx.Body()
objx.Form()
objx.Footer()
objx.CloseHtml()