# -*- coding: utf-8 -*-

"""
coingeckopublicapiv3

This file was automatically generated by APIMATIC v3.0 (
 https://www.apimatic.io ).
"""
from coingeckopublicapiv3.api_helper import APIHelper
from coingeckopublicapiv3.models.ath_1 import Ath1
from coingeckopublicapiv3.models.ath_change_percentage_1 import AthChangePercentage1
from coingeckopublicapiv3.models.ath_date_1 import AthDate1
from coingeckopublicapiv3.models.banner_image import BannerImage
from coingeckopublicapiv3.models.explorer import Explorer
from coingeckopublicapiv3.models.floor_price import FloorPrice
from coingeckopublicapiv3.models.floor_price_1_y_percentage_change import FloorPrice1yPercentageChange
from coingeckopublicapiv3.models.floor_price_14_d_percentage_change import FloorPrice14dPercentageChange
from coingeckopublicapiv3.models.floor_price_24_h_percentage_change import FloorPrice24hPercentageChange
from coingeckopublicapiv3.models.floor_price_30_d_percentage_change import FloorPrice30dPercentageChange
from coingeckopublicapiv3.models.floor_price_60_d_percentage_change import FloorPrice60dPercentageChange
from coingeckopublicapiv3.models.floor_price_7_d_percentage_change import FloorPrice7dPercentageChange
from coingeckopublicapiv3.models.image_3 import Image3
from coingeckopublicapiv3.models.links_1 import Links1
from coingeckopublicapiv3.models.market_cap_2 import MarketCap2
from coingeckopublicapiv3.models.market_cap_24_h_percentage_change import MarketCap24hPercentageChange
from coingeckopublicapiv3.models.volume_24_h import Volume24h
from coingeckopublicapiv3.models.volume_24_h_percentage_change import Volume24hPercentageChange


class NFTData(object):

    """Implementation of the 'NFTData' model.

    Attributes:
        id (str): NFT collection ID
        contract_address (str): NFT collection contract address
        asset_platform_id (str): NFT collection asset platform ID
        name (str): NFT collection name
        symbol (str): NFT collection symbol
        image (Image3): NFT collection image url
        banner_image (BannerImage): NFT collection banner image url
        description (str): NFT collection description
        native_currency (str): NFT collection native currency
        native_currency_symbol (str): NFT collection native currency symbol
        market_cap_rank (float): coin market cap rank
        floor_price (FloorPrice): NFT collection floor price
        market_cap (MarketCap2): NFT collection market cap
        volume_24_h (Volume24h): NFT collection volume in 24 hours
        floor_price_in_usd_24_h_percentage_change (float): NFT collection
            floor price in usd 24 hours percentage change
        floor_price_24_h_percentage_change (FloorPrice24hPercentageChange):
            The model property of type FloorPrice24hPercentageChange.
        market_cap_24_h_percentage_change (MarketCap24hPercentageChange): NFT
            collection market cap 24 hours percentage change
        volume_24_h_percentage_change (Volume24hPercentageChange): NFT
            collection volume in 24 hours percentage change
        number_of_unique_addresses (float): number of unique address owning
            the NFTs
        number_of_unique_addresses_24_h_percentage_change (float): number of
            unique address owning the NFTs 24 hours percentage change
        volume_in_usd_24_h_percentage_change (float): NFT collection volume in
            usd 24 hours percentage change
        total_supply (float): NFT collection total supply
        one_day_sales (float): NFT collection one day sales
        one_day_sales_24_h_percentage_change (float): NFT collection one day
            sales 24 hours percentage change
        one_day_average_sale_price (float): NFT collection one day average
            sale price
        one_day_average_sale_price_24_h_percentage_change (float): NFT
            collection one day average sale price 24 hours percentage change
        links (Links1): NFT collection links
        floor_price_7_d_percentage_change (FloorPrice7dPercentageChange): NFT
            collection floor price 7 days percentage change
        floor_price_14_d_percentage_change (FloorPrice14dPercentageChange):
            NFT collection floor price 14 days percentage change
        floor_price_30_d_percentage_change (FloorPrice30dPercentageChange):
            NFT collection floor price 30 days percentage change
        floor_price_60_d_percentage_change (FloorPrice60dPercentageChange):
            NFT collection floor price 60 days percentage change
        floor_price_1_y_percentage_change (FloorPrice1yPercentageChange): NFT
            collection floor price 1 year percentage change
        explorers (List[Explorer]): NFT collection block explorers links
        user_favorites_count (float): NFT collection user favorites count
        ath (Ath1): NFT collection all time highs
        ath_change_percentage (AthChangePercentage1): NFT collection all time
            highs change percentage
        ath_date (AthDate1): NFT collection all time highs date

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "id": 'id',
        "contract_address": 'contract_address',
        "asset_platform_id": 'asset_platform_id',
        "name": 'name',
        "symbol": 'symbol',
        "image": 'image',
        "banner_image": 'banner_image',
        "description": 'description',
        "native_currency": 'native_currency',
        "native_currency_symbol": 'native_currency_symbol',
        "market_cap_rank": 'market_cap_rank',
        "floor_price": 'floor_price',
        "market_cap": 'market_cap',
        "volume_24_h": 'volume_24h',
        "floor_price_in_usd_24_h_percentage_change": 'floor_price_in_usd_24h_percentage_change',
        "floor_price_24_h_percentage_change": 'floor_price_24h_percentage_change',
        "market_cap_24_h_percentage_change": 'market_cap_24h_percentage_change',
        "volume_24_h_percentage_change": 'volume_24h_percentage_change',
        "number_of_unique_addresses": 'number_of_unique_addresses',
        "number_of_unique_addresses_24_h_percentage_change": 'number_of_unique_addresses_24h_percentage_change',
        "volume_in_usd_24_h_percentage_change": 'volume_in_usd_24h_percentage_change',
        "total_supply": 'total_supply',
        "one_day_sales": 'one_day_sales',
        "one_day_sales_24_h_percentage_change": 'one_day_sales_24h_percentage_change',
        "one_day_average_sale_price": 'one_day_average_sale_price',
        "one_day_average_sale_price_24_h_percentage_change": 'one_day_average_sale_price_24h_percentage_change',
        "links": 'links',
        "floor_price_7_d_percentage_change": 'floor_price_7d_percentage_change',
        "floor_price_14_d_percentage_change": 'floor_price_14d_percentage_change',
        "floor_price_30_d_percentage_change": 'floor_price_30d_percentage_change',
        "floor_price_60_d_percentage_change": 'floor_price_60d_percentage_change',
        "floor_price_1_y_percentage_change": 'floor_price_1y_percentage_change',
        "explorers": 'explorers',
        "user_favorites_count": 'user_favorites_count',
        "ath": 'ath',
        "ath_change_percentage": 'ath_change_percentage',
        "ath_date": 'ath_date'
    }

    _optionals = [
        'id',
        'contract_address',
        'asset_platform_id',
        'name',
        'symbol',
        'image',
        'banner_image',
        'description',
        'native_currency',
        'native_currency_symbol',
        'market_cap_rank',
        'floor_price',
        'market_cap',
        'volume_24_h',
        'floor_price_in_usd_24_h_percentage_change',
        'floor_price_24_h_percentage_change',
        'market_cap_24_h_percentage_change',
        'volume_24_h_percentage_change',
        'number_of_unique_addresses',
        'number_of_unique_addresses_24_h_percentage_change',
        'volume_in_usd_24_h_percentage_change',
        'total_supply',
        'one_day_sales',
        'one_day_sales_24_h_percentage_change',
        'one_day_average_sale_price',
        'one_day_average_sale_price_24_h_percentage_change',
        'links',
        'floor_price_7_d_percentage_change',
        'floor_price_14_d_percentage_change',
        'floor_price_30_d_percentage_change',
        'floor_price_60_d_percentage_change',
        'floor_price_1_y_percentage_change',
        'explorers',
        'user_favorites_count',
        'ath',
        'ath_change_percentage',
        'ath_date',
    ]

    def __init__(self,
                 id=APIHelper.SKIP,
                 contract_address=APIHelper.SKIP,
                 asset_platform_id=APIHelper.SKIP,
                 name=APIHelper.SKIP,
                 symbol=APIHelper.SKIP,
                 image=APIHelper.SKIP,
                 banner_image=APIHelper.SKIP,
                 description=APIHelper.SKIP,
                 native_currency=APIHelper.SKIP,
                 native_currency_symbol=APIHelper.SKIP,
                 market_cap_rank=APIHelper.SKIP,
                 floor_price=APIHelper.SKIP,
                 market_cap=APIHelper.SKIP,
                 volume_24_h=APIHelper.SKIP,
                 floor_price_in_usd_24_h_percentage_change=APIHelper.SKIP,
                 floor_price_24_h_percentage_change=APIHelper.SKIP,
                 market_cap_24_h_percentage_change=APIHelper.SKIP,
                 volume_24_h_percentage_change=APIHelper.SKIP,
                 number_of_unique_addresses=APIHelper.SKIP,
                 number_of_unique_addresses_24_h_percentage_change=APIHelper.SKIP,
                 volume_in_usd_24_h_percentage_change=APIHelper.SKIP,
                 total_supply=APIHelper.SKIP,
                 one_day_sales=APIHelper.SKIP,
                 one_day_sales_24_h_percentage_change=APIHelper.SKIP,
                 one_day_average_sale_price=APIHelper.SKIP,
                 one_day_average_sale_price_24_h_percentage_change=APIHelper.SKIP,
                 links=APIHelper.SKIP,
                 floor_price_7_d_percentage_change=APIHelper.SKIP,
                 floor_price_14_d_percentage_change=APIHelper.SKIP,
                 floor_price_30_d_percentage_change=APIHelper.SKIP,
                 floor_price_60_d_percentage_change=APIHelper.SKIP,
                 floor_price_1_y_percentage_change=APIHelper.SKIP,
                 explorers=APIHelper.SKIP,
                 user_favorites_count=APIHelper.SKIP,
                 ath=APIHelper.SKIP,
                 ath_change_percentage=APIHelper.SKIP,
                 ath_date=APIHelper.SKIP):
        """Constructor for the NFTData class"""

        # Initialize members of the class
        if id is not APIHelper.SKIP:
            self.id = id 
        if contract_address is not APIHelper.SKIP:
            self.contract_address = contract_address 
        if asset_platform_id is not APIHelper.SKIP:
            self.asset_platform_id = asset_platform_id 
        if name is not APIHelper.SKIP:
            self.name = name 
        if symbol is not APIHelper.SKIP:
            self.symbol = symbol 
        if image is not APIHelper.SKIP:
            self.image = image 
        if banner_image is not APIHelper.SKIP:
            self.banner_image = banner_image 
        if description is not APIHelper.SKIP:
            self.description = description 
        if native_currency is not APIHelper.SKIP:
            self.native_currency = native_currency 
        if native_currency_symbol is not APIHelper.SKIP:
            self.native_currency_symbol = native_currency_symbol 
        if market_cap_rank is not APIHelper.SKIP:
            self.market_cap_rank = market_cap_rank 
        if floor_price is not APIHelper.SKIP:
            self.floor_price = floor_price 
        if market_cap is not APIHelper.SKIP:
            self.market_cap = market_cap 
        if volume_24_h is not APIHelper.SKIP:
            self.volume_24_h = volume_24_h 
        if floor_price_in_usd_24_h_percentage_change is not APIHelper.SKIP:
            self.floor_price_in_usd_24_h_percentage_change = floor_price_in_usd_24_h_percentage_change 
        if floor_price_24_h_percentage_change is not APIHelper.SKIP:
            self.floor_price_24_h_percentage_change = floor_price_24_h_percentage_change 
        if market_cap_24_h_percentage_change is not APIHelper.SKIP:
            self.market_cap_24_h_percentage_change = market_cap_24_h_percentage_change 
        if volume_24_h_percentage_change is not APIHelper.SKIP:
            self.volume_24_h_percentage_change = volume_24_h_percentage_change 
        if number_of_unique_addresses is not APIHelper.SKIP:
            self.number_of_unique_addresses = number_of_unique_addresses 
        if number_of_unique_addresses_24_h_percentage_change is not APIHelper.SKIP:
            self.number_of_unique_addresses_24_h_percentage_change = number_of_unique_addresses_24_h_percentage_change 
        if volume_in_usd_24_h_percentage_change is not APIHelper.SKIP:
            self.volume_in_usd_24_h_percentage_change = volume_in_usd_24_h_percentage_change 
        if total_supply is not APIHelper.SKIP:
            self.total_supply = total_supply 
        if one_day_sales is not APIHelper.SKIP:
            self.one_day_sales = one_day_sales 
        if one_day_sales_24_h_percentage_change is not APIHelper.SKIP:
            self.one_day_sales_24_h_percentage_change = one_day_sales_24_h_percentage_change 
        if one_day_average_sale_price is not APIHelper.SKIP:
            self.one_day_average_sale_price = one_day_average_sale_price 
        if one_day_average_sale_price_24_h_percentage_change is not APIHelper.SKIP:
            self.one_day_average_sale_price_24_h_percentage_change = one_day_average_sale_price_24_h_percentage_change 
        if links is not APIHelper.SKIP:
            self.links = links 
        if floor_price_7_d_percentage_change is not APIHelper.SKIP:
            self.floor_price_7_d_percentage_change = floor_price_7_d_percentage_change 
        if floor_price_14_d_percentage_change is not APIHelper.SKIP:
            self.floor_price_14_d_percentage_change = floor_price_14_d_percentage_change 
        if floor_price_30_d_percentage_change is not APIHelper.SKIP:
            self.floor_price_30_d_percentage_change = floor_price_30_d_percentage_change 
        if floor_price_60_d_percentage_change is not APIHelper.SKIP:
            self.floor_price_60_d_percentage_change = floor_price_60_d_percentage_change 
        if floor_price_1_y_percentage_change is not APIHelper.SKIP:
            self.floor_price_1_y_percentage_change = floor_price_1_y_percentage_change 
        if explorers is not APIHelper.SKIP:
            self.explorers = explorers 
        if user_favorites_count is not APIHelper.SKIP:
            self.user_favorites_count = user_favorites_count 
        if ath is not APIHelper.SKIP:
            self.ath = ath 
        if ath_change_percentage is not APIHelper.SKIP:
            self.ath_change_percentage = ath_change_percentage 
        if ath_date is not APIHelper.SKIP:
            self.ath_date = ath_date 

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Creates an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """

        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        id = dictionary.get("id") if dictionary.get("id") else APIHelper.SKIP
        contract_address = dictionary.get("contract_address") if dictionary.get("contract_address") else APIHelper.SKIP
        asset_platform_id = dictionary.get("asset_platform_id") if dictionary.get("asset_platform_id") else APIHelper.SKIP
        name = dictionary.get("name") if dictionary.get("name") else APIHelper.SKIP
        symbol = dictionary.get("symbol") if dictionary.get("symbol") else APIHelper.SKIP
        image = Image3.from_dictionary(dictionary.get('image')) if 'image' in dictionary.keys() else APIHelper.SKIP
        banner_image = BannerImage.from_dictionary(dictionary.get('banner_image')) if 'banner_image' in dictionary.keys() else APIHelper.SKIP
        description = dictionary.get("description") if dictionary.get("description") else APIHelper.SKIP
        native_currency = dictionary.get("native_currency") if dictionary.get("native_currency") else APIHelper.SKIP
        native_currency_symbol = dictionary.get("native_currency_symbol") if dictionary.get("native_currency_symbol") else APIHelper.SKIP
        market_cap_rank = dictionary.get("market_cap_rank") if dictionary.get("market_cap_rank") else APIHelper.SKIP
        floor_price = FloorPrice.from_dictionary(dictionary.get('floor_price')) if 'floor_price' in dictionary.keys() else APIHelper.SKIP
        market_cap = MarketCap2.from_dictionary(dictionary.get('market_cap')) if 'market_cap' in dictionary.keys() else APIHelper.SKIP
        volume_24_h = Volume24h.from_dictionary(dictionary.get('volume_24h')) if 'volume_24h' in dictionary.keys() else APIHelper.SKIP
        floor_price_in_usd_24_h_percentage_change = dictionary.get("floor_price_in_usd_24h_percentage_change") if dictionary.get("floor_price_in_usd_24h_percentage_change") else APIHelper.SKIP
        floor_price_24_h_percentage_change = FloorPrice24hPercentageChange.from_dictionary(dictionary.get('floor_price_24h_percentage_change')) if 'floor_price_24h_percentage_change' in dictionary.keys() else APIHelper.SKIP
        market_cap_24_h_percentage_change = MarketCap24hPercentageChange.from_dictionary(dictionary.get('market_cap_24h_percentage_change')) if 'market_cap_24h_percentage_change' in dictionary.keys() else APIHelper.SKIP
        volume_24_h_percentage_change = Volume24hPercentageChange.from_dictionary(dictionary.get('volume_24h_percentage_change')) if 'volume_24h_percentage_change' in dictionary.keys() else APIHelper.SKIP
        number_of_unique_addresses = dictionary.get("number_of_unique_addresses") if dictionary.get("number_of_unique_addresses") else APIHelper.SKIP
        number_of_unique_addresses_24_h_percentage_change = dictionary.get("number_of_unique_addresses_24h_percentage_change") if dictionary.get("number_of_unique_addresses_24h_percentage_change") else APIHelper.SKIP
        volume_in_usd_24_h_percentage_change = dictionary.get("volume_in_usd_24h_percentage_change") if dictionary.get("volume_in_usd_24h_percentage_change") else APIHelper.SKIP
        total_supply = dictionary.get("total_supply") if dictionary.get("total_supply") else APIHelper.SKIP
        one_day_sales = dictionary.get("one_day_sales") if dictionary.get("one_day_sales") else APIHelper.SKIP
        one_day_sales_24_h_percentage_change = dictionary.get("one_day_sales_24h_percentage_change") if dictionary.get("one_day_sales_24h_percentage_change") else APIHelper.SKIP
        one_day_average_sale_price = dictionary.get("one_day_average_sale_price") if dictionary.get("one_day_average_sale_price") else APIHelper.SKIP
        one_day_average_sale_price_24_h_percentage_change = dictionary.get("one_day_average_sale_price_24h_percentage_change") if dictionary.get("one_day_average_sale_price_24h_percentage_change") else APIHelper.SKIP
        links = Links1.from_dictionary(dictionary.get('links')) if 'links' in dictionary.keys() else APIHelper.SKIP
        floor_price_7_d_percentage_change = FloorPrice7dPercentageChange.from_dictionary(dictionary.get('floor_price_7d_percentage_change')) if 'floor_price_7d_percentage_change' in dictionary.keys() else APIHelper.SKIP
        floor_price_14_d_percentage_change = FloorPrice14dPercentageChange.from_dictionary(dictionary.get('floor_price_14d_percentage_change')) if 'floor_price_14d_percentage_change' in dictionary.keys() else APIHelper.SKIP
        floor_price_30_d_percentage_change = FloorPrice30dPercentageChange.from_dictionary(dictionary.get('floor_price_30d_percentage_change')) if 'floor_price_30d_percentage_change' in dictionary.keys() else APIHelper.SKIP
        floor_price_60_d_percentage_change = FloorPrice60dPercentageChange.from_dictionary(dictionary.get('floor_price_60d_percentage_change')) if 'floor_price_60d_percentage_change' in dictionary.keys() else APIHelper.SKIP
        floor_price_1_y_percentage_change = FloorPrice1yPercentageChange.from_dictionary(dictionary.get('floor_price_1y_percentage_change')) if 'floor_price_1y_percentage_change' in dictionary.keys() else APIHelper.SKIP
        explorers = None
        if dictionary.get('explorers') is not None:
            explorers = [Explorer.from_dictionary(x) for x in dictionary.get('explorers')]
        else:
            explorers = APIHelper.SKIP
        user_favorites_count = dictionary.get("user_favorites_count") if dictionary.get("user_favorites_count") else APIHelper.SKIP
        ath = Ath1.from_dictionary(dictionary.get('ath')) if 'ath' in dictionary.keys() else APIHelper.SKIP
        ath_change_percentage = AthChangePercentage1.from_dictionary(dictionary.get('ath_change_percentage')) if 'ath_change_percentage' in dictionary.keys() else APIHelper.SKIP
        ath_date = AthDate1.from_dictionary(dictionary.get('ath_date')) if 'ath_date' in dictionary.keys() else APIHelper.SKIP
        # Return an object of this model
        return cls(id,
                   contract_address,
                   asset_platform_id,
                   name,
                   symbol,
                   image,
                   banner_image,
                   description,
                   native_currency,
                   native_currency_symbol,
                   market_cap_rank,
                   floor_price,
                   market_cap,
                   volume_24_h,
                   floor_price_in_usd_24_h_percentage_change,
                   floor_price_24_h_percentage_change,
                   market_cap_24_h_percentage_change,
                   volume_24_h_percentage_change,
                   number_of_unique_addresses,
                   number_of_unique_addresses_24_h_percentage_change,
                   volume_in_usd_24_h_percentage_change,
                   total_supply,
                   one_day_sales,
                   one_day_sales_24_h_percentage_change,
                   one_day_average_sale_price,
                   one_day_average_sale_price_24_h_percentage_change,
                   links,
                   floor_price_7_d_percentage_change,
                   floor_price_14_d_percentage_change,
                   floor_price_30_d_percentage_change,
                   floor_price_60_d_percentage_change,
                   floor_price_1_y_percentage_change,
                   explorers,
                   user_favorites_count,
                   ath,
                   ath_change_percentage,
                   ath_date)

    def __repr__(self):
        return (f'{self.__class__.__name__}('
                f'id={(self.id if hasattr(self, "id") else None)!r}, '
                f'contract_address={(self.contract_address if hasattr(self, "contract_address") else None)!r}, '
                f'asset_platform_id={(self.asset_platform_id if hasattr(self, "asset_platform_id") else None)!r}, '
                f'name={(self.name if hasattr(self, "name") else None)!r}, '
                f'symbol={(self.symbol if hasattr(self, "symbol") else None)!r}, '
                f'image={(self.image if hasattr(self, "image") else None)!r}, '
                f'banner_image={(self.banner_image if hasattr(self, "banner_image") else None)!r}, '
                f'description={(self.description if hasattr(self, "description") else None)!r}, '
                f'native_currency={(self.native_currency if hasattr(self, "native_currency") else None)!r}, '
                f'native_currency_symbol={(self.native_currency_symbol if hasattr(self, "native_currency_symbol") else None)!r}, '
                f'market_cap_rank={(self.market_cap_rank if hasattr(self, "market_cap_rank") else None)!r}, '
                f'floor_price={(self.floor_price if hasattr(self, "floor_price") else None)!r}, '
                f'market_cap={(self.market_cap if hasattr(self, "market_cap") else None)!r}, '
                f'volume_24_h={(self.volume_24_h if hasattr(self, "volume_24_h") else None)!r}, '
                f'floor_price_in_usd_24_h_percentage_change={(self.floor_price_in_usd_24_h_percentage_change if hasattr(self, "floor_price_in_usd_24_h_percentage_change") else None)!r}, '
                f'floor_price_24_h_percentage_change={(self.floor_price_24_h_percentage_change if hasattr(self, "floor_price_24_h_percentage_change") else None)!r}, '
                f'market_cap_24_h_percentage_change={(self.market_cap_24_h_percentage_change if hasattr(self, "market_cap_24_h_percentage_change") else None)!r}, '
                f'volume_24_h_percentage_change={(self.volume_24_h_percentage_change if hasattr(self, "volume_24_h_percentage_change") else None)!r}, '
                f'number_of_unique_addresses={(self.number_of_unique_addresses if hasattr(self, "number_of_unique_addresses") else None)!r}, '
                f'number_of_unique_addresses_24_h_percentage_change={(self.number_of_unique_addresses_24_h_percentage_change if hasattr(self, "number_of_unique_addresses_24_h_percentage_change") else None)!r}, '
                f'volume_in_usd_24_h_percentage_change={(self.volume_in_usd_24_h_percentage_change if hasattr(self, "volume_in_usd_24_h_percentage_change") else None)!r}, '
                f'total_supply={(self.total_supply if hasattr(self, "total_supply") else None)!r}, '
                f'one_day_sales={(self.one_day_sales if hasattr(self, "one_day_sales") else None)!r}, '
                f'one_day_sales_24_h_percentage_change={(self.one_day_sales_24_h_percentage_change if hasattr(self, "one_day_sales_24_h_percentage_change") else None)!r}, '
                f'one_day_average_sale_price={(self.one_day_average_sale_price if hasattr(self, "one_day_average_sale_price") else None)!r}, '
                f'one_day_average_sale_price_24_h_percentage_change={(self.one_day_average_sale_price_24_h_percentage_change if hasattr(self, "one_day_average_sale_price_24_h_percentage_change") else None)!r}, '
                f'links={(self.links if hasattr(self, "links") else None)!r}, '
                f'floor_price_7_d_percentage_change={(self.floor_price_7_d_percentage_change if hasattr(self, "floor_price_7_d_percentage_change") else None)!r}, '
                f'floor_price_14_d_percentage_change={(self.floor_price_14_d_percentage_change if hasattr(self, "floor_price_14_d_percentage_change") else None)!r}, '
                f'floor_price_30_d_percentage_change={(self.floor_price_30_d_percentage_change if hasattr(self, "floor_price_30_d_percentage_change") else None)!r}, '
                f'floor_price_60_d_percentage_change={(self.floor_price_60_d_percentage_change if hasattr(self, "floor_price_60_d_percentage_change") else None)!r}, '
                f'floor_price_1_y_percentage_change={(self.floor_price_1_y_percentage_change if hasattr(self, "floor_price_1_y_percentage_change") else None)!r}, '
                f'explorers={(self.explorers if hasattr(self, "explorers") else None)!r}, '
                f'user_favorites_count={(self.user_favorites_count if hasattr(self, "user_favorites_count") else None)!r}, '
                f'ath={(self.ath if hasattr(self, "ath") else None)!r}, '
                f'ath_change_percentage={(self.ath_change_percentage if hasattr(self, "ath_change_percentage") else None)!r}, '
                f'ath_date={(self.ath_date if hasattr(self, "ath_date") else None)!r})')

    def __str__(self):
        return (f'{self.__class__.__name__}('
                f'id={(self.id if hasattr(self, "id") else None)!s}, '
                f'contract_address={(self.contract_address if hasattr(self, "contract_address") else None)!s}, '
                f'asset_platform_id={(self.asset_platform_id if hasattr(self, "asset_platform_id") else None)!s}, '
                f'name={(self.name if hasattr(self, "name") else None)!s}, '
                f'symbol={(self.symbol if hasattr(self, "symbol") else None)!s}, '
                f'image={(self.image if hasattr(self, "image") else None)!s}, '
                f'banner_image={(self.banner_image if hasattr(self, "banner_image") else None)!s}, '
                f'description={(self.description if hasattr(self, "description") else None)!s}, '
                f'native_currency={(self.native_currency if hasattr(self, "native_currency") else None)!s}, '
                f'native_currency_symbol={(self.native_currency_symbol if hasattr(self, "native_currency_symbol") else None)!s}, '
                f'market_cap_rank={(self.market_cap_rank if hasattr(self, "market_cap_rank") else None)!s}, '
                f'floor_price={(self.floor_price if hasattr(self, "floor_price") else None)!s}, '
                f'market_cap={(self.market_cap if hasattr(self, "market_cap") else None)!s}, '
                f'volume_24_h={(self.volume_24_h if hasattr(self, "volume_24_h") else None)!s}, '
                f'floor_price_in_usd_24_h_percentage_change={(self.floor_price_in_usd_24_h_percentage_change if hasattr(self, "floor_price_in_usd_24_h_percentage_change") else None)!s}, '
                f'floor_price_24_h_percentage_change={(self.floor_price_24_h_percentage_change if hasattr(self, "floor_price_24_h_percentage_change") else None)!s}, '
                f'market_cap_24_h_percentage_change={(self.market_cap_24_h_percentage_change if hasattr(self, "market_cap_24_h_percentage_change") else None)!s}, '
                f'volume_24_h_percentage_change={(self.volume_24_h_percentage_change if hasattr(self, "volume_24_h_percentage_change") else None)!s}, '
                f'number_of_unique_addresses={(self.number_of_unique_addresses if hasattr(self, "number_of_unique_addresses") else None)!s}, '
                f'number_of_unique_addresses_24_h_percentage_change={(self.number_of_unique_addresses_24_h_percentage_change if hasattr(self, "number_of_unique_addresses_24_h_percentage_change") else None)!s}, '
                f'volume_in_usd_24_h_percentage_change={(self.volume_in_usd_24_h_percentage_change if hasattr(self, "volume_in_usd_24_h_percentage_change") else None)!s}, '
                f'total_supply={(self.total_supply if hasattr(self, "total_supply") else None)!s}, '
                f'one_day_sales={(self.one_day_sales if hasattr(self, "one_day_sales") else None)!s}, '
                f'one_day_sales_24_h_percentage_change={(self.one_day_sales_24_h_percentage_change if hasattr(self, "one_day_sales_24_h_percentage_change") else None)!s}, '
                f'one_day_average_sale_price={(self.one_day_average_sale_price if hasattr(self, "one_day_average_sale_price") else None)!s}, '
                f'one_day_average_sale_price_24_h_percentage_change={(self.one_day_average_sale_price_24_h_percentage_change if hasattr(self, "one_day_average_sale_price_24_h_percentage_change") else None)!s}, '
                f'links={(self.links if hasattr(self, "links") else None)!s}, '
                f'floor_price_7_d_percentage_change={(self.floor_price_7_d_percentage_change if hasattr(self, "floor_price_7_d_percentage_change") else None)!s}, '
                f'floor_price_14_d_percentage_change={(self.floor_price_14_d_percentage_change if hasattr(self, "floor_price_14_d_percentage_change") else None)!s}, '
                f'floor_price_30_d_percentage_change={(self.floor_price_30_d_percentage_change if hasattr(self, "floor_price_30_d_percentage_change") else None)!s}, '
                f'floor_price_60_d_percentage_change={(self.floor_price_60_d_percentage_change if hasattr(self, "floor_price_60_d_percentage_change") else None)!s}, '
                f'floor_price_1_y_percentage_change={(self.floor_price_1_y_percentage_change if hasattr(self, "floor_price_1_y_percentage_change") else None)!s}, '
                f'explorers={(self.explorers if hasattr(self, "explorers") else None)!s}, '
                f'user_favorites_count={(self.user_favorites_count if hasattr(self, "user_favorites_count") else None)!s}, '
                f'ath={(self.ath if hasattr(self, "ath") else None)!s}, '
                f'ath_change_percentage={(self.ath_change_percentage if hasattr(self, "ath_change_percentage") else None)!s}, '
                f'ath_date={(self.ath_date if hasattr(self, "ath_date") else None)!s})')
