一些源代码如下:
class Flask(object):
def __init__(self, value):
self.value = value
def _get(self):
return self.value
def _set(self,value):
self.value = value
name = property(_get, _set)
del _get, _set
app = Flask('abc')
app.name = 'hello'
我的问题是为什么这个源代码块可以工作。类方法\u get,\u set被del
语句删除。为什么我们也可以使用应用程序名称调用Flask._set
方法?你知道吗
del
删除名称和内存(如果没有其他引用)。你知道吗既然在^ {< CD2>}时复制引用,^ {< CD1>}没有效果,您相信它已经(例如)在C++代码中成像强制删除的灾难性影响。这将使python运行时不稳定)
不能直接(按名称)访问
_get
和_set
方法,但它们仍在某个地方被引用。你知道吗小而简单的例子:
结果:
您可以看到
x
保留了数据。但是访问l
会引发NameError
正如注释所说,它们并没有被真正删除,因为存在对它们的引用(由属性持有),但是它们(作为名称)被从类本身删除,因此
不可能,因为Flask类不再具有这些成员。你知道吗
相关问题 更多 >
编程相关推荐