code: def Deserialize(self, reader):
          
          usage = reader.ReadByte()
          self.Usage = usage
  
          if usage == TransactionAttributeUsage.ContractHash or usage == TransactionAttributeUsage.Vote or \
                  (usage >= TransactionAttributeUsage.Hash1 and usage <= TransactionAttributeUsage.Hash15):
              self.Data = reader.ReadBytes(32)
  
          elif usage == TransactionAttributeUsage.ECDH02 or usage == TransactionAttributeUsage.ECDH03:
              self.Data = bytearray(usage) + bytearray(reader.ReadBytes(32))
  
          elif usage == TransactionAttributeUsage.Script:
              self.Data = reader.ReadBytes(20)
  
          elif usage == TransactionAttributeUsage.DescriptionUrl:
  
              self.Data = reader.ReadBytes(reader.ReadByte())
  
          elif usage == TransactionAttributeUsage.Description or usage >= TransactionAttributeUsage.Remark:
              self.Data = reader.ReadVarBytes(max=self.MAX_ATTR_DATA_SIZE)
          else:
              logger.error("format error!!!")
docs: Deserialize full object.
  
          Args:
              reader (neo.IO.BinaryReader):