从另一个文件导入类及其函数

7 投票
6 回答
26243 浏览
提问于 2025-04-15 23:24

我在用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()

撰写回答