파이썬 오류가 다른 것의 객체의 인스턴스를 만드는 중 오류가 발생했습니다.
-
26-12-2019 - |
문제
Python에서 매우 간단한 컨테이너 객체를 만들고 함수 중 하나는 프로그램을 알려주는 것을 제외하고는 절대적으로 아무 것도하지 않는 일시적인 NULL 자리 표시 자 클래스를 만들어야합니다.
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
.
_Cycle__cyclepass
객체를 만들 때 __cyclepass
를 찾아내는 지구상에서 무엇을 원인일까요?
해결책
[제안 된대로 내 코멘트를 답변으로 이동합니다.]
이것은 Python의 이름의 이름 맨 글링 의 결과입니다.두 배의 밑줄 접두사에서 단일 밑줄로의 이름을 바꾸고 문제가 해결됩니다.
제휴하지 않습니다 StackOverflow