如何从 Python 中的另一个文件调用类方法?

Posted

技术标签:

【中文标题】如何从 Python 中的另一个文件调用类方法?【英文标题】:How do I call a class method from another file in Python? 【发布时间】:2018-01-05 19:55:21 【问题描述】:

我正在学习 Python,并且在同一个目录中有两个文件。

printer.py

class Printer(object):
    def __init__(self):
        self.message = 'yo'

    def printMessage(self):
        print self.message

if __name__ == "__main__":
    printer = Printer()
    printer.printMessage()

如何从同一目录中的另一个文件example.py 调用printMessage(self) 方法?我认为this answer 很接近,但它显示了如何从同一文件中的另一个类调用类方法。

【问题讨论】:

你导入printed.py了吗? 对这个问题的多次反对让我有点生气。 3 年前,我还是一个初学者,即使在阅读了 SO 帖子之后,我也很沮丧。对于想要自学的初学者来说,如何使用导入系统是非常困难的。 【参考方案1】:

在example.py文件中你可以写下面的代码

从打印机导入打印机

prnt = 打印机()

prnt.printer()

【讨论】:

【参考方案2】:

@Gleland 的答案是正确的,但如果您想为整个项目使用 Printer 类的一个共享实例,那么您需要将 Printer 的实例化移出 if 子句和导入实例,而不是类,即:

class Printer(object):
    def __init__(self):
        self.message = 'yo'

    def printMessage(self):
        print self.message

printer = Printer()

if __name__ == "__main__":
    printer.printMessage()

现在,在另一个文件中:

from printer import printer as pr
pr.printMessage()

【讨论】:

不,如果没有实例作为参数,您不能调用未绑定的方法。 我没有调用未绑定的方法。请再看看。与其他@gleland 答案的唯一区别是我导入的是实例,而不是类。 @KlausD。您能否修改您的评论并撤消反对票?【参考方案3】:

你必须导入它并像这样调用它:

import printer as pr

pr.Printer().printMessage()

【讨论】:

这是不正确的。 printMessage 不是静态的。您需要创建Printer 类的实例。 你正在调用一个没有参数的类方法。我猜你的意思是pr.Printer().printMessage() @ChristianK。是的,刚刚修好了。谢谢

以上是关于如何从 Python 中的另一个文件调用类方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 React.js 中的另一个类组件调用方法

如何从 Flutter(Dart) 中的另一个类调用方法?

如何从同一个类中的另一个构造函数调用抽象类的构造函数(方法重载)[重复]

从 UIButton 中的另一个类调用方法

如何将变量值从一个文件中的一个类传递给另一个文件中的另一个类python tkinter

从同一个类中的另一个方法调用 main 方法