반응형
벡터 표현을 만드는 클래스에 대한 슬라이스 기능을 구현하려고합니다.
지금까지이 코드를 가지고 있는데, 슬라이스를 제대로 구현할 것이라고 생각하지만 v [4]
와 같은 호출을 할 때마다 v가 벡터 인 파이썬은 충분한 매개 변수가 없다는 오류를 반환합니다. 그래서 일반 인덱스와 슬라이싱을 모두 처리하기 위해 클래스에서 getitem
특수 메서드를 정의하는 방법을 알아 내려고합니다.
def __getitem__(self, start, stop, step):
index = start
if stop == None:
end = start + 1
else:
end = stop
if step == None:
stride = 1
else:
stride = step
return self.__data[index:end:stride]
해결 방법
__ getitem __ ()
메소드는 객체가 슬라이스 될 때 slice
객체를받습니다. 구성 요소를 가져 오려면 slice
객체의 start
, stop
및 step
멤버를 확인하기 만하면됩니다. 슬라이스.
>>> class C(object):
... def __getitem__(self, val):
... print val
...
>>> c = C()
>>> c[3]
3
>>> c[3:4]
slice(3, 4, None)
>>> c[3:4:-2]
slice(3, 4, -2)
>>> c[():1j:'a']
slice((), 1j, 'a')
참조 페이지 https://stackoverflow.com/questions/2936863
반응형
'파이썬' 카테고리의 다른 글
파이썬 BeautifulSoup : 특정 테이블의 내용 가져 오기 (0) | 2020.11.25 |
---|---|
파이썬 Python numpy.square 대 ** (0) | 2020.11.25 |
파이썬 파이 게임, 소리가 나지 않아 (0) | 2020.11.25 |
파이썬 두 날짜 사이의 DataFrame 행 선택 (0) | 2020.11.25 |
파이썬 수학 도메인 오류-sqrt (0) | 2020.11.25 |
댓글