我想在类中添加一个'stack',方法如下:
class MyClass:
class Extras:
# defs...
def __init__( self ):
# .. other init code
self.extras_stack = []
def push_extras( self, vars ):
self.extras_stack.append( Extras( vars ) if vars else None )
def pop_extras( self ):
extras = self.extras_stack.pop()
del extras
现在,这似乎工作正常,但是当'del'看到'None'时会发生什么?我假设它只是忽略'None',但我在python文档中看不到。
另外,为什么我不能写:
del self.extas_stack.pop()
由于pop()返回一个Extras()对象(或None),它似乎应该有用吗?
修改
再次对不正确/误导性的标题抱歉。
我现在明白了我误解的根源。原因是'del None'看起来像是C / C ++中的空指针删除。这就是我觉得错的原因。我的问题的“另外”部分实际上也是相关的:关于del的观点是它减少了对象的使用次数,你需要变量(我猜测它充当智能指针)返回这样做。这就是为什么你不能只写'del self.extras_stack.pop()'。
我现在也明白,当'del x'出现时你不能保证调用 del ,这意味着我不能在这里使用它。
我很抱歉,如果这个问题被认为是重复的,但我至少觉得我在这里学到了一些东西。