2017-09-15 18 views
0

に定義されていない私は、エラーを持っている:NameError: name 'convert_symbol_to_int' is not defined私はこのコードを実行すると:NameError:名「convert_symbol_to_int」が

class ReadData(): 
    def __init__(self, sheet_path): 
     self.book = xlrd.open_workbook(sheet_path) 
     self.sheet = self.book.sheet_by_index(1) 
     self.users = [] 

    def read(self): 
     for row_index in range(2, self.sheet.nrows): 
      rows = self.sheet.row_values(row_index) 
      if rows[1] != '' and rows[2] != '' and rows[4] != '': 
       woman = convert_symbol_to_int(row[8]) 
       man = convert_symbol_to_int(row[9]) 

    def convert_symbol_to_int(self,arg): 
     if arg == '○': 
      return 2 
     elif arg == '×': 
      return 1 
     elif arg == '△': 
      return 0 
     else: 
      return -1 

x = ReadData('./data/excel1.xlsx') 
x.read() 

をこのエラーはなぜ起こるか私は本当に理解することはできません。 convert_symbol_to_intにアクセスできないのはなぜですか?私はこれをどのように修正すべきですか?

答えて

1

あなたはカルヤン・レディは、すでに答えとしてまさに、あなたはクラス自体へのポインタである、selfでメソッドを呼び出す必要があり

man = self.convert_symbol_to_int(row[9]) 
0

を使用する必要があります。次の例では、クラス内で定義された外部宣言された関数とメソッドの違いを示しています

def hello(): 
    print("hello, world!") 


class Greeting(object): 
    def __init__(self, world): 
     self.world = world 

    def hello(self): 
     print("hello, {}!".format(self.world)) 

    def make_greeting(self): 
     hello() # this will call the function we created outside the class 
     self.hello() # this will call the method defined in the class 

selfの目的は、すでにこの質問で説明されています What is the purpose of self?