Функция getattr() в Python, значение атрибута по имени
Позволяет получить значение атрибута объекта по его имени
Синтаксис:
getattr(object, name, default)
Параметры:
- object — объект, значение атрибута которого требуется получить
- name — имя атрибута объект, должно быть строкой
- default — значение по умолчанию, которое будет возвращено, если имя атрибута name отсутствует.
Возвращаемое значение:
- значение именованного атрибута объекта
Описание:
Функция getattr() возвращает значение атрибута указанного объекта object по его имени name .
Имя атрибута name должно быть строкой. Если строка является именем name одного из атрибутов объекта object , результатом является значение этого атрибута.
Если атрибут с таким именем name не существует, возвращается значение по умолчанию default , если оно передано в функцию, в противном случае бросается исключение AttributeError .
Нужно понимать и помнить что вызов getattr(object, ‘x’) полностью эквивалентно вызову object.x . Есть только два широко известных случая, когда функция getattr() может быть очень полезна:
- когда невозможно вызвать object.x , т. к. заранее не известно, какой атрибут будет нужен. Например атрибут представляет собой строковую переменную. Очень часто встречается в метапрограммировании (полезно знать об этом).
- когда точно неизвестно есть ли значение у нужного атрибута объекта. Например вызов object.z вызовет исключение AttributeError , если y атрибута z нет значения. Но если мы сможем указать какое то значение по умолчанию для z , то вызов getattr(object, ‘z’, 5) вернет 5 .
Примеры получения значения атрибута по имени.
class MyObj: name = 'Chuck Norris' phone = '+666111000' country = 'Norway' x = getattr(MyObj, 'phone') print(x) # +666111000 # Удалим атрибут phone из объекта MyObj: delattr(MyObj, 'phone') # Пробуем получить атрибут phone из объекта MyObj: x = getattr(MyObj, 'phone', '+600000000') print(x) # +600000000
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
Как получить значение атрибута python
Кроме атрибутов объектов в классе можно определять атрибуты классов. Подобные атрибуты определяются в виде переменных уровня класса. Например:
class Person: type = "Person" description = "Describes a person" print(Person.type) # Person print(Person.description) # Describes a person Person.type = "Class Person" print(Person.type) # Class Person
Здесь в классе Person определено два атрибута: type, который хранит имя класса, и description, который хранит описание класса.
Для обращения к атрибутам класса мы можем использовать имя класса, например: Person.type , и, как и атрибуты объекта, мы можем получать и изменять их значения.
Подобные атрибуты являются общими для всех объектов класса:
class Person: type = "Person" def __init__(self, name): self.name = name tom = Person("Tom") bob = Person("Bob") print(tom.type) # Person print(bob.type) # Person # изменим атрибут класса Person.type = "Class Person" print(tom.type) # Class Person print(bob.type) # Class Person
Атрибуты класса могут применяться для таких ситуаций, когда нам надо определить некоторые общие данные для всех объектов. Например:
class Person: default_name = "Undefined" def __init__(self, name): if name: self.name = name else: self.name = Person.default_name tom = Person("Tom") bob = Person("") print(tom.name) # Tom print(bob.name) # Undefined
В данном случае атрибут default_name хранит имя по умолчанию. И если в конструктор передана пустая строка для имени, то атрибуту name передается значение атрибута класса default_name. Для обращения к атрибуту класса внутри методов можно применять имя класса
self.name = Person.default_name
Атрибут класса
Возможна ситуация, когда атрибут класса и атрибут объекта совпадает по имени. Если в коде для атрибута объекта не задано значение, то для него может применяться значение атрибута класса:
class Person: name = "Undefined" def print_name(self): print(self.name) tom = Person() bob = Person() tom.print_name() # Undefined bob.print_name() # Undefined bob.name = "Bob" bob.print_name() # Bob tom.print_name() # Undefined
Здесь метод print_name использует атрибут объект name, однако нигде в коде этот атрибут не устанавливается. Зато на уровне класса задан атрибут name. Поэтому при первом обращении к методу print_name, в нем будет использоваться значение атрибута класса:
tom = Person() bob = Person() tom.print_name() # Undefined bob.print_name() # Undefined
Однако далее мы можем поменять установить атрибут объекта:
bob.name = "Bob" bob.print_name() # Bob tom.print_name() # Undefined
Причем второй объект — tom продолжит использовать атрибут класса. И если мы изменим атрибут класса, соответственно значение tom.name тоже изменится:
tom = Person() bob = Person() tom.print_name() # Undefined bob.print_name() # Undefined Person.name = "Some Person" # меняем значение атрибута класса bob.name = "Bob" # устанавливаем атрибут объекта bob.print_name() # Bob tom.print_name() # Some Person
Статические методы
Кроме обычных методов класс может определять статические методы. Такие методы предваряются аннотацией @staticmethod и относятся в целом к классу. Статические методы обычно определяют поведение, которое не зависит от конкретного объекта:
class Person: __type = "Person" @staticmethod def print_type(): print(Person.__type) Person.print_type() # Person - обращение к статическому методу через имя класса tom = Person() tom.print_type() # Person - обращение к статическому методу через имя объекта
В данном случае в классе Person определен атрибут класса __type , который хранит значение, общее для всего класса — название класса. Причем поскольку название атрибута предваряется двумя подчеркиваниями, то данный атрибут будет приватным, что защитит от недопустимого изменения.
Также в классе Person определен статический метод print_type , который выводит на консоль значение атрибута __type. Действие этого метода не зависит от конкретного объекта и относится в целом ко всему классу — вне зависимости от объекта на консоль будет выводится одно и то же значение атрибута __type. Поэтому такой метод можно сделать статическим.
Как получить значение атрибута HTML тега через bs4 для Python?
У меня есть вот такая функция, которая получает название фильма, ищет этот фильм на КиноПоиске и возвращает его название на КП. Но в моих планах она должна вернуть еще и ссылку на кинопоиск, рейтинг:
1 2 3 4 5 6 7 8 9 10 11
def GetLink(FilmName): FM = FilmName.replace(" ", "+") url = f"https://www.kinopoisk.ru/index.php?kp_query=" r = requests.get(url) a = BeautifulSoup(r.text, features='lxml') res = a.find("p", {"class": "name"}) URL = a.find("p", {"class": "name"}).find("data-url").text print(URL) return res.text
Я разобрался с получением названия, но как получить ссылку и рейтинг? Прикреплю html к вопросу:
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как получить значение тега с определенным id на html странице
Пробывал загружать код страницы в мемо и дальше ищу ид тега или символы "$". Работать.
Как на делфи с компонентом webrowser получить значение тега страницы HTML
Надо как я понимаю получить индекс или что там тега с классом ‘img ico-tinklapis’ а потом добавить.
Нужно сделать, чтобы значение атрибута тега отображался внутри этого тега
Как сделать чтобы html-код <div отображался примерно вот так: del .
Как достать текст из html тега python?
Я уже знаю, что есть либа bs4 но все еще не понимаю как мне достать инфу из тега. Я знаю, что.
Регистрация: 28.08.2022
Сообщений: 137
PS: мне нужен атрибут data-url, так как именно там лежит ссылка, вот как ее получить?
410 / 270 / 113
Регистрация: 16.02.2021
Сообщений: 519
Сообщение было отмечено ctepler как решение
Решение
В парсинге не силён,возможно можно как-то сократить код
1 2 3 4 5 6 7 8 9 10 11
import requests from bs4 import BeautifulSoup as BS r = requests.get('https://www.kinopoisk.ru/index.php?kp_query=') html = BS(r.content, 'html.parser') s = html.body.find('div',class_='info') a = s.find('a') rat = html.body.find('div', class_='rating') url = a.attrs["data-url"] print(url,'\n',rat.text)
Регистрация: 28.08.2022
Сообщений: 137
Большое спасибо
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как получить id из тега list html
Только начинаю изучать php и пытаюсь понять, как получить id выбранного элемента из list. С помощью.

Как получить текст из html тега?
Ребят, появилась надобность поработать с html или на него. <td></td><td >

Как получить два атрибута у модели в html файле
Всем привет! @RequestMapping(value = "/cars", params = "request") public String.

Нужно сменить значение атрибута href тега link
Пытаюсь сменить значение href, чтобы при нажатии на кнопку менялась тема. Переключать классы не.
Как получить доступ к атрибутам тега table HTML
Приветствую! Собственно сабж в теме. Использую WB, необходимо получить доступ к атрибутам таблицы.
Как получить значение атрибута python
Время создания: 31.03.2019 18:45
Автор: br0ke
Текстовые метки: python, selenium, webdriver, attribute, value, get_attribute
Раздел: Информационные технологии — Python — Библиотеки — selenium
Запись: and-semakin/mytetra_data/master/base/1554039945wfverkzopi/text.html на raw.githubusercontent.com
attr_value = elem.get_attribute(«attribute name»)
- Проверить видимость элемента через Selenium
- Получить значение атрибута элемента через Selenium
- Выполнить JavaScript-код через Selenium
- Открыть инструменты разработчика в Chrome через Selenium
- Запустить Chrome в полноэкранном режиме через Selenium
- Заполнить поле ввода через Selenium
