我正在尝试学习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)
答案 0 :(得分: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()
答案 1 :(得分: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