\Magento\Catalog\Model\Product\Attribute\Repositoryコンストラクタに(ブロック、ヘルパークラス、またはその他の場所で)のインスタンスを挿入します。
/**
 * @var \Magento\Catalog\Model\Product\Attribute\Repository $_productAttributeRepository
 */
protected $_productAttributeRepository;
/**
 * ...
 * @param \Magento\Catalog\Model\Product\Attribute\Repository $productAttributeRepository
 * ...
 */
public function __construct(
    ...
    \Magento\Catalog\Model\Product\Attribute\Repository $productAttributeRepository,
    ...
) {
    ...
    $this->_productAttributeRepository = $productAttributeRepository;
    ...
}
次に、クラスでメソッドを作成して、コードで属性を取得します。
/**
 * Get single product attribute data 
 *
 * @return Magento\Catalog\Api\Data\ProductAttributeInterface
 */
public function getProductAttributeByCode($code)
{
    $attribute = $this->_productAttributeRepository->get($code);
    return $attribute;
}
次に、このメソッドを.phtmlファイル内などで呼び出すことができます
$attrTest = $block->getProductAttributeByCode('test');
次に、属性オブジェクトで呼び出しを行うことができます、例えば
- オプションを取得: $attribute->getOptions()
- 各店舗のフロントエンドラベルを取得します。 $attrTest->getFrontendLabels()
- データ配列をデバッグします。 echo '> ' . print_r($attrTest->debug(), true);
  debug:Array([attribute_id] => 274 [entity_type_id] => 4 [attribute_code] => product_manual_download_label [backend_type] => varchar [frontend_input] => text [frontend_label] => Product Manual Download Label [is_required] => 0 [ is_user_defined] => 1 [default_value] =>製品マニュアルのダウンロード[is_unique] => 0 [is_global] => 0 [is_visible] => 1 [is_searchable] => 0 [is_filterable] => 0 [is_comparable] => 0 [ is_visible_on_front] => 0 [is_html_allowed_on_front] => 1 [is_used_for_price_rules] => 0 [is_filterable_in_search] => 0 [used_in_product_listing] => 0 [used_for_sort_by] => 0 [is_visible_in_advanced_search] => 0 [is_visible_in_advanced_search] => 00 [is_wysiwyg_enabled] => 0 [is_used_for_promo_rules] => 0 [is_required_in_admin_store] => 0 [is_used_in_grid] => 1 [is_visible_in_grid] => 1 [is_filterable_in_grid] => 1 [search_weight] => 1)