-1

私はこのコンストラクターでPythonクラスを書いています:

      #constuctor
def __init__(self, initPt_=[1,1],fun_=Optim_tests.peaks,NITER_=30,alpha_=0.7,NMAX_=5000,FTOL_=10**(-10)):
    self.initPt = initPt_
    self.fun = fun_
    self.alpha = alpha_
    self.ITER = NITER_
    self.NMAX = NMAX_
    self.FTOL = FTOL_

両方のメンバー関数を定義します。

def buildSimplex(self):
    self.simplex=[]
    self.simplex.append([x for x in self.initPt])
    for i in range(len(self.initPt)):
        temp=[x for x in self.initPt]
        temp[i]=self.initPt[i]+1
        self.simplex.append(temp)
    self.npts=len(self.simplex)

def sA(self):
    self.buildSimplex()

2番目の関数を呼び出すと、エラーが発生します。

NameError: global name 'buildSimplex' is not defined    

手がかりはありますか?

4

2 に答える 2

3

一見したところ、識別の問題だと思いますが、より具体的な回答を得るには実際のコードを提供する必要があります。

私がこれを言っている理由は、あなたが得ているエラーのためです。クラスを適切に宣言し、定義されていないインスタンスのメソッドを呼び出そうとすると、実際には a: を取得する必要がありますAttributeError: A instance has no attribute 'xxxx'。また、メソッドがクラスで宣言されている場合は、メソッドを定義する順序を気にする必要はありません。以下のmet1との例を参照してください。met4

例えば:

class A():
   def met1(self):
      print self.met4()

   def met2(self):
      self.met3()

   def met4():
      print 'x'


 a = A()
 a.met1()
 >>> x
 a.met2()
 >>> AttributeError: A instance has no attribute 'met3'
于 2012-02-22T08:16:08.157 に答える
0

エラーNameError: global name 'buildTool1' is not definedは、変数にアクセスしようとしているがbuildTool1、ローカルまたはグローバルで定義されていないことを示しています。

これをチェックしてください

class test(object):

    def __init__(self, name):
        self.name = name

    def buildSimplex(self):
        print "CALL"

    def sA(self):
        self.buildSimplex()


if __name__ == '__main__':
    x = test('test')
    x.sA()
于 2012-02-22T08:23:22.397 に答える