【问题标题】:How do I call a class method from another file in Python?如何从 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 帖子之后,我也很沮丧。对于想要自学的初学者来说,如何使用导入系统是非常困难的。

标签: python member-functions


【解决方案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。是的,刚刚修好了。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2018-12-31
    • 2018-07-11
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多