这里是 Python 3,以防万一它很重要。
我试图正确理解如何在@property使用时实现继承,并且我已经搜索了 StackOverflow 并阅读了 20 个类似的问题,但无济于事,因为他们试图解决的问题略有不同。这是我用于测试的代码:
class Example:
def __init__(self):
self.__data = None
@property
def data(self):
return self.__data
@data.setter
def data(self, data):
self.__data = data
class Example2(Example):
def __init__(self):
super().__init__()
@property
def data(self):
return super().data # Works!
@data.setter
def data(self, data):
data = '2' + data
#Example.data = data # Works, but I want to avoid using the parent name explicitly
#super().data = data # Raises AttributeError: 'super' object has no attribute 'data'
#super().data.fset(self, data) # …Run Code Online (Sandbox Code Playgroud) 我在很多地方(包括这里,在 Stack Overflow 中)读到,网络工作者可以随时被浏览器杀死并重新启动。好吧,“随时”可能意味着“只要它们正在做某事”,但问题是它们可以在没有事先警告的情况下被浏览器杀死并重新启动,从而丢失存储在globalThis.
但在我的一生中,我无法在规范中找到这一点,这让我很担心,因为我实际上使用的是 Web Worker,其正常功能依赖于将一些信息数据保存在全局变量中,以在消息处理调用之间保持最小状态功能。
这个 Web Worker 的工作方式就像一个魅力,并且状态会被保留,除非页面刷新,但我担心如果浏览器决定重新启动 Web Worker,应用程序可能会失败,并且如果发生这种情况肯定会失败。
我已经在谷歌上搜索过这个问题,特别是寻找示例和替代方案来重写我的网络工作者,而不需要全局状态,但我没有找到任何相关的内容。
谁能给我一些关于这方面的官方信息?