2017-11-11 6 views
0

이 코드를 가지고반환되는 빈 목록없이 파이썬 목록을 서브 클래 싱하는 방법은 무엇입니까?

class lines_type(list): 
    def __init__(self, lines): 
     self.lines = lines[:] 
lines = lines_type([1, 2, 3]) 
print(lines) 
print(lines.lines) 

그리고 내 출력했다

[] 
[1, 2, 3] 

하지만 내 예상 출력은 내가 클래스 목록의 __init__ 방법은 빈을 반환한다는 생각이

<__main__.lines_type object at 0x00EC6410> 
[1, 2, 3] 

같은 것입니다 명부. 그렇다면 목록에서 수업을 연장하고 빈 목록을받지 않으려면 어떻게해야합니까?

class lines_type(list): 
    def __init__(self, lines): 
     super().__init__(self) 
     self.lines = lines[:] 

을 그러나 "자기"목록이 될하지 않으려면 : 그래서 이렇게 -

+1

당신은 상속 및 구성을 혼합하고 출력을, 귀하의 예제에서 lineslines.lines를해야 인쇄 할 때. 클래스가'list'로부터 상속받은 경우,'self' *는리스트입니다. 속성으로 다른 목록을 붙일 필요가 없습니다. – user2357112

+0

@ user2357112 답장을 보내 주셔서 감사합니다. 하지만 다른 목록을 속성에 붙이면 자기가 목록이 아닐 수 있습니까? –

+0

'self'가리스트가되기를 원하지 않는다면'list'를 상속하지 마십시오. – user2357112

답변

0

난 당신이 __init____init__ 서브 클래스 '의 목록하지 않았다 여기에서 문제가 생각 그런 다음 목록에서 하위 클래스를 만들지 마십시오.

class lines_type(object): 
    def __init__(self, lines): 
     self.lines = lines[:] 

하는

<__main__.lines_type object at 0x...> 
[1, 2, 3] 
+0

고맙습니다. –

+0

@GrakT 문제 없습니다. D –

관련 문제