-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 つ指定)

これを修正するには 2 つの方法があります。Main.main に 1 つの引数を取らせるか:

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また、 Application.py からクラスをインポートするには、次のように記述します。

from Application import Application
于 2012-10-16T18:46:17.003 に答える