在python中将一个类导入到另一个类

在python中将一个类导入到另一个类,python,Python,我试图学习python,我试图在另一个类中导入一个类,但它不起作用 Application.py: class Application: def example(self): return "i am from Application class" Main.py class Main: def main(): application = Application() application.example() if __na

我试图学习python,我试图在另一个类中导入一个类,但它不起作用

Application.py

class Application:

    def example(self):
        return "i am from Application class"
Main.py

class Main:

    def main():
        application = Application()
        application.example()

if __name__ == "__main__":
    Main.main()
这给了我:

File "Main.py", line 11, in <module>
    Main.main()
TypeError: unbound method main() must be called with Main instance as first argument (got nothing instead)
文件“Main.py”,第11行,在
Main.Main()
TypeError:必须以main实例作为第一个参数调用未绑定的方法main()(但没有得到任何结果)

您应该首先实例化主类

if __name__ == '__main__':
    myMain = Main()
    myMain.main()
但这会给您带来另一个错误:

TypeError:main()不接受任何参数(给定1个)

有两种方法可以解决这个问题。make Main.Main或接受一个参数:

class Main:
    def main(self):
        application = Application()
        application.example()
或者将Main.Main设为静态方法。在这种情况下,您不必实例化主类:

class Main:
    @staticmethod
    def main():
        application = Application()
        application.example()

if __name__ == "__main__":
    Main.main()

该错误与导入无关(尽管您似乎不在任何地方导入
应用程序
)。问题在于,您像使用静态方法一样使用
main
方法,而没有将其声明为静态

要解决这个问题,您需要将
main
方法声明为静态,或者创建
main
类的实例

作为静态方法(添加
@staticmethod
装饰器):

举个例子:

class Main():

    def main(self):
        ....

if __name__ == "__main__":
    myMain = Main() #create an instance
    myMain.main()   #call the function on the instance
另外,要从Application.py导入
应用程序
类,只需编写以下代码:

from Application import Application

您的代码没有导入任何内容,您将
self
参数遗漏到
main
。您应该阅读以了解导入的基本知识。您的错误与导入无关;如果删除对
Application
的任何提及,您将得到相同的错误;为什么您的主要函数需要一个类?
from Application import Application