- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在单例中使用 QTimer 实现了一个计时器。单例是使用 Borg 实现的图案。如果我在 Singleton 的函数内使用单次启动 QTimer,它将不会被执行。在单例之外的函数中进行相同的调用效果很好。
这是代码:
#!/usr/bin/env python
import sys
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication
class Borg():
_shared_state = {}
def __init__(self):
self.__dict__ = self._shared_state
class Timers(Borg):
def __init__(self):
Borg.__init__(self)
def update_not_working(self):
QTimer().singleShot(2000, Timers().update_not_working)
print('update not working')
def update_working():
QTimer().singleShot(2000, update_working)
print('update working')
if __name__ == '__main__':
app = QApplication(sys.argv)
print('start timer')
Timers().update_not_working()
update_working()
sys.exit(app.exec_())
输出是(没有错误,没有异常):
start timer
update not working
update working
update working
....
为什么一个调用有效而另一个调用无效?我的 Borg 实现或 QTimer 的使用有问题吗?
最佳答案
update_not_working
中的
print self
和 updateworking
中的 print Timers()
显示 Timers
事件循环开始之前的对象与其中的对象不同:
update not working
<__main__.Timers instance at 0xb52162cc>
update working
<__main__.Timers instance at 0xb52162cc>
update working
<__main__.Timers instance at 0xb521650c>
update working
<__main__.Timers instance at 0xb521650c>
update working
<__main__.Timers instance at 0xb521650c>
update working
<__main__.Timers instance at 0xb521650c>
@classmethod 在这里应该有所帮助,因为它允许在实例或类上调用方法,就像在单次语句中一样。
比较:When should I use @classmethod and when def method(self)?
关于python - 在 Singleton/Borg 内部调用时 QTimer 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36592311/
我正在使用相互包含模块的 Borg 模式。请参阅下面的示例代码(不是真实代码,但它显示了问题)。在这种情况下,我有两个不同的 Borgs,因为解释器认为类名(我猜是类)是不同的。 有没有办法在这种情况
我正在考虑在我的项目中使用单例模式,所以我搜索了 StackOverflow 以找到一种 pythonic 方式来实现它。我找到了 this question公认的答案是“具有函数(而不是类)的模块可
我遇到了 Borg design并认为它很适合我正在做的事情,但是我在使用它时收到了 DeprecationWarning(我目前使用的是 Python 2.6,但很快就会转移到更新的版本)。 在评论
我正在使用 borg 模式在对象之间共享状态: class Borg: __shared_state = {} def __init__(self): self.__d
我知道使用此模式是为了创建具有相同状态的多个实例,但我真的不明白它是如何工作的。 class Borg: _shared_state = {} def __init__(self):
我刚刚在网上偶然发现了这些有趣的代码: http://code.activestate.com/recipes/66531/ class Borg: __shared_state = {}
我看到了这个 Borg 单例模式代码,但我无法理解我添加到单例对象的新成员是如何附加到 __shared_state = {} 字典的。 这是单例代码 class Borg(object):
我在单例中使用 QTimer 实现了一个计时器。单例是使用 Borg 实现的图案。如果我在 Singleton 的函数内使用单次启动 QTimer,它将不会被执行。在单例之外的函数中进行相同的调用效果
我正在使用来自不同网站的 API,该 API 会返回我的用户用来购买虚拟商品的几个“价格点 URL”。 我应该将这些结果缓存至少一个小时,因为它们不会对系统上的价格点进行太多更改。 (而且我们想节省我
为什么 Borg pattern优于Singleton pattern ? 我问是因为我看不出它们有什么不同。 博格: class Borg: __shared_state = {} # in
据我所知,Google 的 Kubernetes 是基于 Google 的 Borg;然而,Borg 似乎比 Kubernetes 更大。我的理解是,Borg 是一个大系统,包含像 Kubernete
我是一名优秀的程序员,十分优秀!