-1

我正在尝试学习 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)
4

2 回答 2

0

您应该首先实例化您的 Main 类。

if __name__ == '__main__':
    myMain = Main()
    myMain.main()

但这会给你另一个错误:

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

有两种方法可以解决此问题。要么让 Main.main 接受一个论点:

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

或使 Main.main 成为静态方法。在这种情况下,您不必实例化 Main 类:

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

if __name__ == "__main__":
    Main.main()
于 2012-10-16T18:39:34.743 回答
0

该错误与导入无关(尽管您似乎没有在Application任何地方导入)。问题是您main像使用静态方法一样使用该方法,而没有声明它是静态的。

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

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

class Main():

    @staticmethod
    def main():
       ...

使用实例:

class Main():

    def main(self):
        ....

if __name__ == "__main__":
    myMain = Main() #create an instance
    myMain.main()   #call the function on the instance

此外,要从 Application.py 导入您的Application类,您只需编写以下代码:

from Application import Application
于 2012-10-16T18:46:17.003 回答