첫째,이 질문에 가장 적합한 제목이 무엇인지 알 수 없습니다. 도전자 : "list.append
을 맞춤 클래스에 구현하는 법"리스트에`append`를 호출하면 어떻게됩니까?
나는 Individual
이라고하는 class
입니다. 여기
from itertools import count
class Individual:
ID = count()
def __init__(self, chromosomes):
self.chromosomes = list(chromosomes)
self.id = self.ID.next()
나는이 수업에 대해 수행 할 작업은 다음과 같습니다 : 여기에 클래스의 관련 부분이다 indiv = Individual([])
나는이 개인에게 염색체를 추가 할 : 나는 어떤 염색체에 새로운 개별 인스턴스를 가정 해 보겠습니다
나중에. 현재, 내가해야 할 것 :
indiv.chromosomes.append(makeChromosome(params))
대신, 제가 이상적으로 할 싶은 것은 : 같은 효과
indiv.append(makeChromosome(params))
.
그럼 내 질문은 다음과 같습니다. append
을 목록에 게시하면 실제로 두포에서 무슨 일이 발생합니까? 호출 된 __append__
(또는 __foo__
)이 있습니까? 내 Individual
클래스에서 해당 함수를 구현하면 원하는 동작을 얻을 수 있습니까?
if foo in indiv
기능을 활성화하려면 __contains__
을 Individual
에 구현할 수 있다는 것을 알고 있습니다. indiv.append(…)
기능을 사용하려면 어떻게해야합니까?
젠장! 나는 터널 비전을 분명히 얻었다! 그래도'list.append'를 호출하면 어떻게 될지 설명해 주시겠습니까? – inspectorG4dget
@ inspectorG4dget : 목록 유형 (C로 구현 됨)은 해석기에 의해 호출되는'.append()'메소드를 정의합니다. 그것은 하나의 주장을 기대합니다. 이 메서드는 요소를 목록에 추가합니다. C로 구현되는 것 외에는 별다른 마법이 없습니다. –
@ inspectorG4dget : 사용자 정의 클래스에 목록을 래핑하는 ['UserList' 모듈] (http://hg.python.org/cpython/file/2.7/Lib/UserList.py)의 소스를 살펴보십시오. –