如何从 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 中的另一个文件调用类方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何从同一个类中的另一个构造函数调用抽象类的构造函数(方法重载)[重复]