Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705

Почему код безошибочно обращается к атрибуту класса, хотя арибута класса нет

01.07.2020, 23:36. Показов 786. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья! Вот код.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/python
 
import sys
from Xlib.protocol import display, request, rq
 
######################################################################
 
class foo (rq.ReplyRequest):
 
    _request = rq.Struct(
        rq.Opcode(99),
        rq.Pad(1),
        rq.RequestLength(),
        )
 
    _reply = rq.Struct(
        rq.ReplyCode(),
        rq.LengthOf('names', 1),
        rq.Card16('sequence_number'),
        rq.ReplyLength(),
        rq.Pad(24),
        rq.List('names', rq.Str),
        )
 
######################################################################
 
class _BaseDisplay(display.Display):
 
    def __init__(self, *args, **keys):
        display.Display.__init__(self)
 
######################################################################
 
class Display:
    def __init__(self):
        self.display = _BaseDisplay(display)
        exts = foo (self.display)
        print (exts.names)
        #print (dir (exts))
        #print (dir (rq.ReplyRequest))
 
######################################################################
 
Display()
exts - экземпляр класса foo, print (exts.names) - печатание атрибута names экземпляра exts класса foo:

Bash
1
2
python /user/lib/python2.7/dist-packages/keymon/key_mon.py
[u'Generic Event Extension', u'SHAPE', u'MIT-SHM', u'XInputExtension', u'XTEST', u'BIG-REQUESTS', u'SYNC', u'XKEYBOARD', u'XC-MISC', u'SECURITY', u'XFIXES', u'RENDER', u'RANDR', u'XINERAMA', u'Composite', u'DAMAGE', u'MIT-SCREEN-SAVER', u'DOUBLE-BUFFER', u'DPMS', u'Present', u'DRI3', u'X-Resource', u'XVideo', u'XVideo-MotionCompensation', u'GLX', u'XFree86-VidModeExtension', u'DRI2']
Бальда вся в том, что foo не имеет атрибута names, если раскомментить строчки
#print (dir (exts))
#print (dir (rq.ReplyRequest))
то можно в этом убедиться:
Bash
1
2
3
python /usr/lib/python2.7/dist-packages/keymon/key_mon.py
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_binary', '_data', '_display', '_error', '_parse_response', '_reply', '_request', '_response_lock', '_serial', '_set_error', 'reply']
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattr__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_parse_response', '_set_error', 'reply']
нет тут нигде names, я уже все глаза проглядел. Откуда же оно берётся? Спасибо, кто откликнется.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.07.2020, 23:36
Ответы с готовыми решениями:

Обращение к атрибуту класса из метода класса
class Node(object): inputs = weight = 0 def activate(): for i in Node.inputs: act += i out = 1...

Поиск по атрибуту класса
Привет всем, у меня есть объект в котором много полей, и я хочу создать универсальный метод в котором можно будет выбрать по каким...

Доступ к атрибуту класса
Как в классе b вывести атрибут self.x ? class x: def y(self): self.x = 1 class b(): def __init__(self): ...

4
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
02.07.2020, 00:38
Возможно, тупой вопрос, но есть ли у exts.__dict__ и если есть, то в нем должен быть этот проперти
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
02.07.2020, 08:04
kravam, DobroAlex, все проще, небольшой пример:


rq.ReplyRequest является наследником класса - GetAttrData, который выглядит вот так:

Python
1
2
3
4
5
6
7
8
9
class GetAttrData(object):
    def __getattr__(self, attr):
        try:
            if self._data:
                return self._data[attr]
            else:
                raise AttributeError(attr)
        except KeyError:
            raise AttributeError(attr)
2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
02.07.2020, 08:10
Цитата Сообщение от kravam Посмотреть сообщение
нет тут нигде names, я уже все глаза проглядел. Откуда же оно берётся?
тогда только идти по линии наследования и смотреть там.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
02.07.2020, 14:05
Цитата Сообщение от Welemir1 Посмотреть сообщение
тогда только идти по линии наследования
DmFat, правильно написал. Там динамика. Атрибута такого нет. Но как только к нему обратишься - он что-то вернет.
Обычная Python магия третьего уровня :-)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.07.2020, 14:05
Помогаю со студенческими работами здесь

Конструктор класса по умолчанию: код компилируется, хотя по идее не должен
#include <iostream> class A {}; int main() { A i; A j(i); return 0;

Почему получается использовать методы одного класса в другом, хотя классы не связаны наследованием
Добрый день Когда читала про наследование классов уяснила для себя - оно нужно в том числе, чтобы классы могли...

Поиск класса по атрибуту зная id родителя
Есть такой код <div class="tabs"> <input type="radio" name="tab-btn" id="tab-btn-1" onclick="setAttributeq(1);" checked> ...

Доступ к закрытому атрибуту класса. Задача
Задача. Создать класс телевизор. У пользователя должна быть вводить номер канала, а также уменьшать/увеличить громкость канала. Программа...

Не обращается к функции из класса. Проект телефонная книга
Здравствуйте! Прошу помощи так как проект нужно сдавать уже на днях :( В данном проекте функции уже написаны, но существует следующая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru