0

Python プログラムがあり、他の Python クラスをインポートしようとしていますが、NameError が発生します。

Traceback (most recent call last):
  File "run.py", line 3, in <module>
    f = wow('fgd')
NameError: name 'wow' is not defined

これは、次のファイルにありますnew.py

class wow(object):
    def __init__(self, start):
        self.start = start

    def go(self):
        print "test test test"
        f = raw_input("> ") 
        if f == "test":
            print "!!"  
            return c.vov()  
        else:
            print "nope"    
            return f.go()

class joj(object):
    def __init__(self, start):
        self.start = start
    def vov(self):
       print " !!!!! "

これはファイルにありますrun.py

from new import *

f = wow('fgd')
c = joj('fds')
f.go()

私は何を間違っていますか?

4

1 に答える 1

2

f別の名前空間にあるように、それはできません。

インスタンスのインスタンスを渡す必要がありwowますjoj。これを行うには、最初に逆の方法でそれらを作成するため、f に渡すために c が存在します。

from new import *

c = joj('fds')
f = wow('fgd', c)
f.go()

c次に、パラメータをに追加しwow、参照を as として格納し、asの代わりにself.c使用します この名前空間には存在しません - 参照しているオブジェクトは現在自己です:selfff

class wow(object):
    def __init__(self, start, c):
        self.start = start
        self.c = c

    def go(self):
        print "test test test"
        f = raw_input("> ") 
        if f == "test":
            print "!!"  
            return self.c.vov()  
        else:
            print "nope"    
            return self.go()

class joj(object):
    def __init__(self, start):
        self.start = start
    def vov(self):
       print " !!!!! "

各クラスと関数を新たな出発点と考えてください。他の場所で定義した変数は、それらに分類されません。

于 2012-04-10T00:01:02.497 に答える