var waitTillSomethingHappens = function(){
if(somethingHappened == 1)
{
alert('Something Happened get out of sleep');
}
else
{
setTimeout(waitTillSomethingHappens,1000);
}
};
Вы могли подумать, что могли бы вызвать функция базового класса, которая вызывается свойством:
class FooBar(Foo):
@property
def bar(self):
# return the same value
# as in the base class
return Foo.bar(self)
Хотя это наиболее очевидная вещь, которую можно попробовать, я думаю - она не работает, потому что bar - это свойство, а не вызываемое.
Но свойство - это просто объект с помощью метода получения, чтобы найти соответствующий атрибут:
class FooBar(Foo):
@property
def bar(self):
# return the same value
# as in the base class
return Foo.bar.fget(self)
Super должен помочь:
return super().bar
В Python 2.x вам нужно использовать более подробный синтаксис:
return super(FooBar, self).bar
try
@property
def bar:
return super(FooBar, self).bar
Хотя я не уверен, поддерживает ли python вызов свойства базового класса. Свойство на самом деле является вызываемым объектом, который настраивается с указанной функцией, а затем заменяет это имя в классе. Это может легко означать, что нет доступной суперфункции.
Вы всегда можете переключить свой синтаксис на использование функции property ():
try
@property
def bar:
return super(FooBar, self).bar
Хотя я не уверен, поддерживает ли python вызов свойства базового класса. Свойство на самом деле является вызываемым объектом, который настраивается с указанной функцией, а затем заменяет это имя в классе. Это легко может означать, что нет доступной суперфункции.
Вы всегда можете переключить свой синтаксис на использование функции property ():
class Foo(object):
def _getbar(self):
return 5
def _setbar(self, a):
print a
bar = property(_getbar, _setbar)
class FooBar(Foo):
def _getbar(self):
# return the same value
# as in the base class
return super(FooBar, self)._getbar()
def bar(self, c):
super(FooBar, self)._setbar(c)
print "Something else"
bar = property(_getbar, _setbar)
fb = FooBar()
fb.bar = 7