파이썬에서 객체가 첨자가 가능하든 아니든 의미는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/216972

  •  03-07-2019
  •  | 
  •  

문제

"첨자 가능"의 도메인에 어떤 유형의 객체가 발생합니까?

도움이 되었습니까?

해결책

기본적으로 객체가 __getitem__() 방법. 다시 말해, "컨테이너"인 객체를 설명하는데, 이는 다른 객체를 포함한다는 것을 의미합니다. 여기에는 목록, 튜플 및 사전이 포함됩니다.

다른 팁

내 머리 꼭대기에서, 다음은 위시가 가능한 유일한 내장입니다.

string:  "foobar"[3] == "b"
tuple:   (1,2,3,4)[3] == 4
list:    [1,2,3,4][3] == 4
dict:    {"a":1, "b":2, "c":3}["c"] == 3

하지만 미파 디의 대답 정확합니다 - 구현하는 모든 클래스 __getitem__ 첨자 가능합니다

스크립트 가능한 객체는 작업을 수행 한 작업을 기록하는 객체이며 재생할 수있는 "스크립트"로 저장할 수 있습니다.

예를 들어, 참조 : 응용 프로그램 스크립팅 프레임 워크

이제 Alistair가 자신이 무엇을 요구했는지 알지 못하고 실제로 "구독 가능한"객체 (다른 사람들이 편집 한 것처럼)를 의미한다면, (Mipadi도 대답했듯이) 이것이 올바른 것입니다.

첨자 가능한 객체는 __getitem__ 특수 방법 (생각 목록, 사전).

컴퓨팅에서 첨자의 의미는 다음과 같습니다. "배열의 요소 중 하나를 지정하기 위해 프로그램, 단독 또는 다른 사람들과 함께 사용되는 기호 (일반적으로 첨자로 작성되었지만 실제로는 그렇지 않습니다)."

이제 간단한 예에서 @user2194711 우리는 두 가지 이유 때문에 추가 요소가 목록의 일부가 될 수 없음을 알 수 있습니다.

1) 우리는 실제로 방법 부록을 부르는 것이 아닙니다. 필요하기 때문에 () 그것을 부르기 위해.

2) 오류는 함수 또는 메소드가 첨자가 불가능하다는 것을 나타냅니다. 목록이나 시퀀스처럼 색인이 없음을 의미합니다.

이제 이것을 참조하십시오 :-

>>> var = "myString"
>>> def foo(): return 0
... 
>>> var[3]
't'
>>> foo[3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'function' object is not subscriptable

즉, 구독자 나 요소가 없음을 의미합니다. function 그들이 순서대로 발생하는 것처럼; 그리고 우리는 우리처럼 접근 할 수 없습니다. [].

또한; ~처럼 미파 디 그의 대답에서 말했다. 기본적으로 객체가 __getitem__() 방법. (구독 가능한 경우). 따라서 생성 된 오류 :

arr.append["HI"]

TypeError : 'buildin_function_or_method'객체는 위시가 불가능합니다

나는이 같은 문제가 있었다. 나는하고 있었다

arr = []
arr.append["HI"]

그래서 사용 [ 오류가 발생했습니다. 그것은해야한다 arr.append("HI")

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top