Как получить доступ к определенному свойству или методу класса в Python?

Как извлечь только одно значение из класса при использовании парсера для извлечения информации о цене и названии монет с сайта coinmarket? В текущем коде приложения выводятся 10 значений из класса, однако требуется получить только одно значение. Как можно отобразить только одно значение, а не все 10? 

```python
resp = requests.get(url, headers=headers).text
soup = BeautifulSoup(resp, "lxml")
tbody = soup.find("tbody")
coins = tbody.find_all("tr")

for coin in coins:
    name = coin.find(class_="coin-item-symbol") 
    price = coin.find(class_="sc-500f568e-0 ejtlWy")
    
    if name:
        print(f"{name.text}: {price.text}")
```
  • 14 апреля 2024 г. 16:39
Ответы на вопрос 2
Для доступа к конкретному свойству или методу класса в Python, необходимо использовать точечную нотацию или скобки, в зависимости от типа доступа (атрибут или метод). Например, если у вас есть объект `obj` класса `MyClass` и вы хотите получить доступ к его свойству `my_property`, то вы можете сделать это следующим образом: `obj.my_property`. Если `my_property` является методом, то его нужно вызывать, используя скобки: `obj.my_method()`.

Чтобы извлечь только одно значение из класса при использовании парсера для извлечения информации о цене и названии монет с сайта coinmarket, можно внести изменения в ваш цикл `for`, чтобы извлечь только одно значение. Например, вы можете использовать конструкцию `break` для остановки цикла после первого найденного элемента:

```python
resp = requests.get(url, headers=headers).text
soup = BeautifulSoup(resp, "lxml")
tbody = soup.find("tbody")
coins = tbody.find_all("tr")

for coin in coins:
    name = coin.find(class_="coin-item-symbol") 
    price = coin.find(class_="sc-500f568e-0 ejtlWy")

    if name:
        print(f"{name.text}: {price.text}")
        break
```

В этом случае цикл будет останавливаться после вывода первой найденной пары "название: цена".
* отсюда * 
import json
from urllib.request import urlopen, Request


class Coincap():
    """parser module for the coincap API"""


    @staticmethod
    def format_float(f, i=3):
        return float(("%."+str(i)+"f") % float(f))

    def get_info(self, convert_numbers=True):
        """Get the currency table from the api.coincap.io/v2/assets

        Returns:
                 tuple: (headers 1d list, content 2d list with rows and cols)
        """

        url = "https://api.coincap.io/v2/assets"
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0",
            "Accept": "application/json, text/javascript, */*; q=0.01",
            "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
            "X-Requested-With": "XMLHttpRequest",
        }

        opener = Request(url, headers = headers)
        resp = urlopen(opener)        
        content = resp.read().decode("UTF-8")
        j = json.loads(content)
        data_items = j["data"]
        ret_headers = (
            "Name",
            "Ticker",
            "Price",
            "Capitalization",
            "Change percent in 24 h",
            "Value 24 h",
            "Value",
            "Change 24 h",
            "Change 7 d",
        )
        # attention, I have not found any changes in this API in seven days
        ret_content = []
        tmp_data = []
        for ditem in data_items:
            tmp_data.append(ditem["name"])
            tmp_data.append(ditem["symbol"])
            priceUsd = self.format_float(ditem["priceUsd"])
            tmp_data.append(priceUsd if convert_numbers else str(priceUsd) + " $")
            tmp_data.append(
                self.format_float(ditem["marketCapUsd"], 1)
                if convert_numbers
                else str(self.format_float(ditem["marketCapUsd"], 1)) + " $"
            )
            tmp_data.append(
                self.format_float(ditem["volumeUsd24Hr"])
                if convert_numbers
                else str(self.format_float(ditem["volumeUsd24Hr"])) + " $"
            )
            tmp_data.append(
                self.format_float(ditem["supply"])
                if convert_numbers
                else str(self.format_float(ditem["supply"]))
            )
            tmp_data.append(
                self.format_float(ditem["changePercent24Hr"], 2)
                if convert_numbers
                else str(self.format_float(ditem["changePercent24Hr"], 2)) + "%"
            )
            tmp_data.append(0.0 if convert_numbers else "0.0")
            ret_content.append(tmp_data)
            tmp_data = []
        return (ret_headers, tuple(ret_content))


if __name__ == "__main__":
    cc = Coincap()
    headers, content = cc.get_info()
    btc = content[0]
    print(btc[1], btc[2])
Похожие вопросы