2017-09-15 9 views
0

未解決の参照 'シート'エラーが発生します。 私が試してみましたコードは以下の通りです:メソッド内のシートにアクセスできませんか?

保存方法の sheet
class User(): 
    def __init__(self, sheet_path): 
     self.file = glob.glob(sheet_path) 
     self.construction_area ={} 

    def read(self): 
     for x in self.file: 
      if "$" not in x: 
       book = xlrd.open_workbook(x) 
       sheet = book.sheet_by_index(0) 
       cells = [('user_id', 0, 9), 
          ('name', 4, 0), 
          ('age', 4, 1),] 
          ・ 
          ・ 
   def save(self): 
          ・ 
          ・ 
      for row_index in range(7, sheet.nrows): 
       row = sheet.row_values(row_index) 
          ・ 
          ・ 
x = User('./data/*.xlsx') 
x.read() 
x.save() 

happens.Iは、シートの前にselfを追加しましたエラーが、はAttributeError:「ユーザー」オブジェクトは、「シート」というエラーが発生した一切の属性を持っていません。 なぜ「シート」にアクセスできないのですか?インスタンスを十分に作っていないのですか?これをどうすれば解決できますか?

+1

それはある)、どこでも(しかもself.sheetを使用する必要が__init__方法でそれを宣言します)、あなたはこれらのシートを保存する必要がある場合 (と、それはこのようになりますあなたが望むものです)上記のコードでUserのシート属性はありません。 –

+0

@SandeepBalagopalああ本当に?だから、どうすればいいの? – user8563636

+0

あなたが行う必要がある唯一の修正は、セルフアクセスシートを使用してセーブメソッドでセルフ使用です。 self.sheetのように –

答えて

0

インスタンスメンバーにアクセスするには、インスタンス内から古典的なselfキーワードを使用してインスタンスを指定する必要があります。

あなたsheet変数は、ローカルread方法で作成しですが、ローカルでのみ、それがUserの現在のインスタンスに接続されることはありません。 、あなたは

class User(): 
    def __init__(self, sheet_path): 
     self.file = glob.glob(sheet_path) 
     self.construction_area ={} 
     self.sheet = None 

    def read(self): 
     for x in self.file: 
      if "$" not in x: 
       book = xlrd.open_workbook(x) 
       self.sheet = book.sheet_by_index(0) 
       cells = [('user_id', 0, 9), 
         ('name', 4, 0), 
         ('age', 4, 1),] 

    def save(self): 
     for row_index in range(7, sheet.nrows): 
      row = self.sheet.row_values(row_index) 
関連する問題