code: def Query(self):
          
          if self.name is not None:
              # don't query twice
              return
  
          sb = ScriptBuilder()
          sb.EmitAppCallWithOperation(self.ScriptHash, 'name')
          sb.EmitAppCallWithOperation(self.ScriptHash, 'symbol')
          sb.EmitAppCallWithOperation(self.ScriptHash, 'decimals')
  
          engine = None
          try:
              engine = ApplicationEngine.Run(sb.ToArray(), exit_on_error=True, gas=Fixed8.FromDecimal(10.0), test_mode=False)
          except Exception as e:
              pass
  
          if engine and len(engine.ResultStack.Items) == 3:
              results = engine.ResultStack.Items
  
              try:
                  self.name = results[0].GetString()
                  self.symbol = results[1].GetString()
                  self.decimals = results[2].GetBigInteger()
                  if len(self.name) > 1 and self.name != 'Stack Item' \
                          and len(self.symbol) > 1 and self.symbol != 'Stack Item' \
                          and self.decimals < 10:
                      return True
              except Exception as e:
                  pass
          return False
docs: Query the smart contract for its token information (name, symbol, decimals).
  
          Args:
              wallet (neo.Wallets.Wallet): a wallet instance.
  
          Returns:
              None: if the NEP5Token instance `Name` is already set.
              True: if all information was retrieved.
              False: if information retrieval failed.