2012-01-27 5 views
0

나는 라이브러리와 함께 일하고 있으며, primarilly 특정 오브젝트를 사용하여 X 타입이라고 말할 수있는 라이브러리를 가지고있다.이 라이브러리는 XList와 같은 커스텀 컨테이너를 제공한다.이 컨테이너는 대부분리스트처럼 동작하는 것으로 보인다.왜 일부 파이썬 개체는 표준 파이썬 목록에 들어가는 것을 거부합니까?

내가 수행 할 때 다음과 같은 것이 나타납니다

xl = makeXList(...) 
l = [] 
for x in xl: 
    print repr(x) 
    l.append(x) 

결과 "L"이 빈 목록입니다. 그럼에도 불구하고 x의 파리가 std에서 빠져 나가는 것을 보았습니다. 그래서 그들은 진정으로 반복자가되고 있음을 알고 있습니다. 나는 똑같이 반복하지만, x를 [1,2,3]으로 바꾸면 나는 [1,2,3]이된다. 뭐라 구요?

X 유형의 인스턴스가 일반 파이썬 목록에 들어가기를 거부 할 수있는 방법이 있습니까? 아니면 예상대로 작동하지 않을 수도있는 양심적 인, 새롭다는 이유가 있습니까?이 작업을 수행하는 메커니즘은 무엇입니까? 이것은 파이썬 라이브러리 제작자가 공통적으로 의도 한 일입니까? 이 라이브러리에 대한 문서는 드물게 나타나며 예제 중 일부는 보통 파이썬 목록 인 X가 다소 이상하게 보입니다.


문제는

문제의 라이브러리 scapy입니다

것이었다. scapy가 rdpcap을 사용할 때 조작 된 패킷을 만나서 pcap에서 잘못된 패킷을 읽을 때 PacketList-> python 목록으로 변환하는 것을 거부합니다. scapy가 변형되지 않은 패킷을 처리 할 때 위의 코드가 올바르게 작동합니다.

+1

더 많은 코드를 게시하십시오. 너는 너무 일반적이다. 어쩌면 통역사 입력과 출력도 게시 할 수 있습니까? –

+0

우리가 테스트 할 수있는 것이 도움이 될 것입니다 ... – FakeRainBrigand

+3

'xl'이 비어 있지 않습니까? – cheeken

답변

1

실제로 for-in 루프에 항목을 가져 오시겠습니까? 아마도 xl에 대한 반복자가 제대로 작동하지 않기 때문에 실제로 요소를 다시 얻지는 못합니다.