LINUX.ORG.RU

Каст в нужный тип

 , , python-typing


0

1

Правильно ли делать так в пайтоне:

def eventFilter(self, obj: QObject, event: QEvent):
    if event.type() == QEvent.Drop:
         event: QDropEvent = event
         print(event.pos())

Делаю так чтобы PyCharm корректно автодополнял тип и не подчеркивал обращения к неизвестным полям. Может есть более ТРУ стиль?

Так делать не надо. В python утиная типизация.
В Pycharm попробуй File | Invalidate Caches/Restart, народу помогало. Бесит предупреждение и ничего не помогает - отключи его в настройках.

Solace ★★
()

Делаю так чтобы PyCharm корректно автодополнял тип

А чё теперь погромисты для иде пишут код?

Может есть более ТРУ стиль

Конечно есть! Emacs + elpy.

slaykovsky ★★★
()
Ответ на: комментарий от KivApple

Смотри, есть QDropEvent, от него наследуется QDragMoveEvent. В данный момент времени мы имеет какой-то event, ответь, как проверить, что это именно QDropEvent (но не QDragMoveEvent) используя isinstance.

panter_dsd ★★★★
() автор топика
Ответ на: комментарий от panter_dsd
>>> class QDropEvent:
...     pass
... 
>>> class QDragMoveEvent(QDropEvent):
...     pass
... 
>>> drop = QDropEvent()
>>> drag = QDragMoveEvent()
>>> 
>>> isinstance(drag, QDropEvent)
True
>>> isinstance(drag, QDragMoveEvent)
True
>>> isinstance(drop, QDropEvent)
True
>>> isinstance(drop, QDragMoveEvent)
False
>>> 
>>> isinstance(drop, QDropEvent) and not isinstance(drop, QDragMoveEvent)
True
grazor ★★
()
Последнее исправление: grazor (всего исправлений: 1)
Ответ на: комментарий от panter_dsd

А если наследников 10?

Для точного совпадения

>>> type(drop) is QDropEvent
True
>>> type(drop) is QDragMoveEvent
Fasle

А если нужно проверить, что класс не ниже по иерархии, придётся что-то изобретать.

grazor ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.