Метод every () проверяет, проходят ли все элементы массива в тесте (предоставляемые как функция).
Метод every () выполняет функцию один раз для каждого элемента, присутствующего в массиве:
Примечание: every () не выполняет функцию для элементов массива без значений.
Примечание: every () не изменяет исходный массив
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age == 1;
}
function myFunction() {
alert(ages.every(checkAdult));
}
<p>Click the button to check if every element in the array is equal to one.</p>
<button onclick="myFunction()">Try it</button>
Один из способов сделать это - использовать метакласс:
class Property(pyqtProperty):
def __init__(self, value, name='', type_=None, notify=None):
if type_ and notify:
super().__init__(type_, self.getter, self.setter, notify=notify)
self.value = value
self.name = name
def getter(self, inst=None):
return self.value
def setter(self, inst=None, value=None):
self.value = value
getattr(inst, '_%s_prop_signal_' % self.name).emit(value)
class PropertyMeta(type(QObject)):
def __new__(mcs, name, bases, attrs):
for key in list(attrs.keys()):
attr = attrs[key]
if not isinstance(attr, Property):
continue
value = attr.value
notifier = pyqtSignal(type(value))
attrs[key] = Property(
value, key, type(value), notify=notifier)
attrs['_%s_prop_signal_' % key] = notifier
return super().__new__(mcs, name, bases, attrs)
class HelloWorldHtmlApp(QWebEngineView):
...
class Backend(QObject, metaclass=PropertyMeta):
foo = Property('Hello World')
@pyqtSlot()
def debug(self):
self.foo = 'I modified foo!'
type(QObject)
в качестве основы для метакласса или задержке__init__
для pyqtProperty до тех пор, пока не будет обнаружен сигнал уведомления, или доступ кinst
(«второй self») в getter и setter для получения связанного сигнала , Но вы сделали все это, и это работает как шарм. Большое спасибо @ekhumoro! :) – Jeronimo 25 January 2018 в 10:41