2013-08-01 5 views
0

다음은 예제입니다. 클래스가 인수를 할 때목록 클래스의 하위 클래스를 만들 때 생성자를 사용하지 않는 이유는 무엇입니까?

>>> class MyList(list): 
>>> def __sub__(self, other): 
>>>  L = self[:] 
>>>  for x in other: 
>>>   if x in L: L.remove(x) 
>>>  return L 

>>> L = MyList([1, 2, 3, 'spam', 4, 5]) 
>>> L = L - ['spam'] 
>>> print L 
[1, 2, 3, 4, 5] 

, 그것은 초기화을 필요로 생성자는 얻을 수 있습니다. 위의 초기화 방법이 없습니다. 어떻게 가능할까요? 당신이 하위 클래스로 할 때 당신이 서브 클래스 정의를 오버라이드 (override)하지 않는 한 사전 :

+1

@ inspectorG4dget : 그는 'other'를 반복하면서 'L'에서 삭제합니다. 그건 괜찮을거야. (목록 이해력은 여기서 더 효율적일 수 있습니다 :'x에 대해 x에 대한 x를 반환합니다 (다른 경우에는 x에없는 경우) '). – torek

답변

2

에서

감사합니다, 당신은 부모 클래스의 메서드를 상속합니다. 그래서, 당신의 코드는 기본 목록 클래스의 __init __() 함수를 사용하고 있습니다.