9

これが私のexample.pyファイルです:

from myimport import *
def main():
    myimport2 = myimport(10)
    myimport2.myExample() 

if __name__ == "__main__":
    main()

そして、ここにmyimport.pyファイルがあります:

class myClass:
    def __init__(self, number):
        self.number = number
    def myExample(self):
        result = myExample2(self.number) - self.number
        print(result)
    def myExample2(num):
        return num*num

ファイルを実行するexample.pyと、次のエラーが発生します。

NameError: global name 'myExample2' is not defined

どうすれば修正できますか?

4

5 に答える 5

11

コードの簡単な修正を次に示します。

from myimport import myClass #import the class you needed

def main():
    myClassInstance = myClass(10) #Create an instance of that class
    myClassInstance.myExample() 

if __name__ == "__main__":
    main()

そしてmyimport.py

class myClass:
    def __init__(self, number):
        self.number = number
    def myExample(self):
        result = self.myExample2(self.number) - self.number
        print(result)
    def myExample2(self, num): #the instance object is always needed 
        #as the first argument in a class method
        return num*num
于 2013-11-15T10:02:12.530 に答える
9

コードに 2 つのエラーが表示されます。

  1. myExample2として呼び出す必要がありますself.myExample2(...)
  2. selfmyExample2 を定義するときに追加する必要があります。def myExample2(self, num): ...
于 2013-11-15T09:56:29.503 に答える
0

他の答えは正しいですmyExample2()が、メソッドである必要があるかどうかは疑問です。スタンドアロンで実装することもできます。

def myExample2(num):
    return num*num

class myClass:
    def __init__(self, number):
        self.number = number
    def myExample(self):
        result = myExample2(self.number) - self.number
        print(result)

または、名前空間をきれいに保ちたい場合は、メソッドとして実装しますが、必要ないためself、次のように実装し@staticmethodます。

def myExample2(num):
    return num*num

class myClass:
    def __init__(self, number):
        self.number = number
    def myExample(self):
        result = self.myExample2(self.number) - self.number
        print(result)
    @staticmethod
    def myExample2(num):
        return num*num
于 2013-11-15T10:05:46.457 に答える