在另一个对象中创建对象实例时发生Python错误

在另一个对象中创建对象实例时发生Python错误,python,private-members,name-mangling,Python,Private Members,Name Mangling,我正在用python创建一个非常简单的容器对象,它的一个函数需要创建一个临时的空占位符类,该类除了告诉程序要删除什么之外,什么都不做 class __cyclepass(object): "Null class as a placeholder for deleting items in a cycle.""" pass class Cycle(object): def __init__(self, *args): self.l = list(args

我正在用python创建一个非常简单的容器对象,它的一个函数需要创建一个临时的空占位符类,该类除了告诉程序要删除什么之外,什么都不做

class __cyclepass(object):
    "Null class as a placeholder for deleting items in a cycle."""
    pass

class Cycle(object):

    def __init__(self, *args):
        self.l = list(args)

    #.........................

    def __delitem__(self, key):
        """Magic method for deleting items via indexing."""
        try:
            if isinstance(key, slice):
                s = key.start; e = key.stop; stp = key.step if key.step else 1
                slicelen = abs((s - e) // stp)
                if slicelen == 1:
                    steps = [s]
                else:
                    steps = [s + stp * i for i in range(slicelen)]
                _list = copy(self.l)
                for step in steps:
                    index = step % len(self)
                    _list[index] = __cyclepass() #this is where an error occurs
                self.l = list(filter(lambda x: x.__class__ != __cyclepass, _list))
            else:
                index = key % len(self)
                del self.l[index]
        except:
            raise IndexError("Bad index %s" % str(key))
一切似乎都很好(虽然有点混乱,但这是无关紧要的),但在运行程序并隐式调用delitem方法时,我得到以下错误:

NameError: global name '_Cycle__cyclepass' is not defined

在创建
\uuuuuuCyclePass
对象时,究竟是什么原因导致它查找
\uCyclePass

[根据建议将我的评论移至答案]


这是python对“private”成员进行优化的结果。将双下划线前缀重命名为单下划线,问题就解决了。

这是python名称弄乱“private”成员的结果。将双下划线前缀重命名为单下划线,问题就解决了。好的,我更改了它,实际上一切都已修复,谢谢您的帮助!python为什么会这样做,它是否可以在任何实际意义上使用?@shx2为什么不将其作为一个答案发布?:)