Mam aplikację o ogromnych cechach, która podlega ograniczeniom cech enthought. Głównie problemy z wydajnością podczas korzystania z dekoratora @on_traits_changed. Byłoby całkiem prosta do obejścia tych problemów z PyQt4 (lub PyQt5) sygnałów, jeśli mogę zrobić:Używaj sygnałów HasTraits i PyQt w jednej klasie
from traits.api import *
from PyQt4 import QtCore
class Foo(HasTraits, QtCore.QObject):
pass
Błąd stosu:
TypeError Traceback (most recent call last)
<ipython-input-3-ecdfa57492f7> in <module>()
2 from PyQt4 import QtCore
3
----> 4 class Foo(HasTraits, QtCore.QObject):
5 pass
C:\Python27\lib\site-packages\traits\has_traits.pyc in __new__(cls, class_name,
bases, class_dict)
427
428 # Finish building the class using the updated class dictionary:
--> 429 klass = type.__new__(cls, class_name, bases, class_dict)
430
431 # Fix up all self referential traits to refer to this class:
TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict)
subclass of the metaclasses of all its bases
Ale ze wszystkich wiem, że nie jest to możliwe. Czy jest jakieś obejście?
EDIT: dodano import
EDIT2: dodano błąd stos
Dlaczego uważasz, że to niemożliwe? Jakie testy wykonałeś? – ekhumoro
Przetestowałem napisany przeze mnie kod i wygenerowałem błąd. Nie znalazłem żadnego rozwiązania tego problemu, więc proszę o to teraz. – HeinzKurt
@ HeinzKurt. Dlaczego musisz używać dziedziczenia wielokrotnego? Dlaczego po prostu nie stworzysz wewnętrznej instancji 'QObject' i nie przeniesiesz się do tego? Czy przetestowałeś również najnowszą wersję PyQt5? – ekhumoro