|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
||||||||||||||||
Как создать класс с динамическими атрибутами04.10.2020, 09:11. Показов 5105. Ответов 31
Метки нет (Все метки)
добрый день! Помогите сделать по типу:
one.two Как в библиотеки vk_api при работе с методами
0
|
||||||||||||||||
| 04.10.2020, 09:11 | |
|
Ответы с готовыми решениями:
31
Создать в Python класс User с атрибутами
Использование типов DataContract с другими атрибутами. Прокси класс не генерирует DataContract с атрибутами |
|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
|
| 04.10.2020, 09:32 [ТС] | |
|
Welemir1, это так, тестово. У меня будет класс для работы с API, и туда я буду пихать метод ( как в vk_api ) и параметры
0
|
|
|
Автоматизируй это!
|
||||
| 04.10.2020, 09:35 | ||||
|
скажем вот это Так вот и вопрос стоит ли кумекать если польза сомнительна? я не про себя, а про тебя, тебе это точно зачем то может пригодиться?
0
|
||||
|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
||||||
| 04.10.2020, 09:48 [ТС] | ||||||
|
Welemir1, да, очень надо
Добавлено через 5 минут надо например
0
|
||||||
|
Автоматизируй это!
|
|||
| 04.10.2020, 09:50 | |||
то есть сформулироват пользу не получается?ну ок, не буду мучать, переопределяй у своего класса магические методы __getattr__ и __getattribute__ Добавлено через 34 секунды
0
|
|||
|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
|||||||||||
| 04.10.2020, 09:55 [ТС] | |||||||||||
|
Welemir1, хочу что-бы была гибкая система.
Есть в API метод, я передаю его Api.method(), без функций, и передаю параметры в виде **kwargs пример из vk_api
AttributeError: 'NoneType' object has no attribute 'gfs'
0
|
|||||||||||
|
Автоматизируй это!
|
|||
| 04.10.2020, 09:57 | |||
|
1
|
|||
|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
|
| 04.10.2020, 10:10 [ТС] | |
|
Welemir1, не могу понять что и как там
0
|
|
| 04.10.2020, 10:16 | ||
|
_shut_, Мне лень вникать в то, зачем Вам это нужно. Однако зацепился за слова
1
|
||
|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
|
| 04.10.2020, 10:18 [ТС] | |
|
0
|
|
| 04.10.2020, 10:45 | ||||||
|
Сейчас опишу как динамически создавать новые переменные. Проверено на примерах. Но для атрибутов не проверял, но скорее всего тоже будет работать, так как атрибут это такая же переменная, но только прикрепленная к другой переменной.
Но нужно будет поэкспериментировать. Проверять будем параллельно и Вы и я , после того, как я опишу метод для простой переменной. Добавлено через 19 минут _shut_, Начиная с версии 3.8 для создания новой переменной внутри выражения можно использовать оператор := . (мое прим. Однако он не позволяет динамически создавать переменную из текстовой строки, как это можно сделать с помощью exec() . То есть при использовании оператора := мы должны заранее знать имя переменной, хотя она и создается динамически только в момент использовании выражения содержащего оператор := ). (мое прим. С помощью функции exec() можно автоматически из строки создавать новые динамические переменные). Кстати функция evel() не позволяет этого сделать, так как не разрешает помещать в текстовую строку символ "=". Встречая его там, выдает ошибку. Итак рассмотрим применение функции exec().
Так же можно использовать способ моделирования динамической переменной. Когда создается словарь, в котором ключ соответствует имени переменной, а значение соответствует значению переменной. конец моего прим.) Теперь попробуйте Вы и попробую я динамически создать атрибут к объекту, который определен заранее и Вы в ходе программы динамически получаете имя атрибута в виде строки.
1
|
||||||
|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
||
| 04.10.2020, 10:53 [ТС] | ||
|
class.one.two(params=14332, fs=32e) и в классе допустим будет запрос к сайту ( без разницы что ) exampl.com/one/two?params=12312&fs=4234
0
|
||
|
|
|
| 04.10.2020, 11:43 | |
|
Динамические атрибуты - скользкая дорожка, польза от них сомнительна.
Это хорошо, когда кроме __getattr__ вы ещё переопределяете __dir__, причём чтобы он сумел сработать в нужное время. Либо задействовать интерфейс. В общем, сложно тут всё, лучше сделайте через class['one']['two'], куда меньше гемора будет.
1
|
|
|
|
||
| 04.10.2020, 12:11 | ||
|
P.S. И да, пока ты вообще не понимаешь зачем нужны такие атрибуты и где они применимы.
1
|
||
| 04.10.2020, 12:54 | ||||||
|
_shut_, Кстати Garry Galler, правильно говорит, есть возможности перехватывать не существующие атрибуты, и вставлять свои. Но я уже подзабыл, как это работает, то ли действительно создается новый атрибут, толи его имитация. Почитайте документацию.
Но с помощью функции exec все получилось, тоже все работает. Вот тестирующий пример.
1
|
||||||
|
|
||||||
| 04.10.2020, 13:05 | ||||||
|
Вот самая элементарная реализация динамики в атрибутах:
1
|
||||||
| 04.10.2020, 15:52 | ||||||
|
_shut_, То о чем говорит Garry Galler, описывается в книге
Лутц М. Изучаем Python (том 2, 5-е издание, 2019) Глава 38 "Управляемые атрибуты". Добавлено через 18 минут _shut_, Кстати я и забыл, для атрибутов пользовательских классов создание нового атрибута за пределами класса осуществляется действительно, как сказал Garry Galler, с помощью функции setattr.
Использование же функции exec() оптимально использовать для динамического создания простых переменных (не атрибутов), где не используются пользовательские классы и потому не применима функция setattr().
1
|
||||||
|
1 / 1 / 0
Регистрация: 04.03.2019
Сообщений: 70
|
||||||
| 04.10.2020, 17:05 [ТС] | ||||||
|
сделал так:
0
|
||||||
|
|
|
| 05.10.2020, 09:35 | |
|
_shut_, не обижайтесь, но плохо. Это показывает, что с ООП вообще и с питоном в частности у вас не айс. Рановато вам в динамические атрибуты.
0
|
|
| 05.10.2020, 09:35 | |
|
Помогаю со студенческими работами здесь
20
Создать класс, для работы с динамическими векторами Создать класс, для работы с динамическими векторами Создать динамический класс для выполнения операций с динамическими массивами чисел
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|