@jamylak과 @ jpaddison3의 답변을 결합하여 입력과 같은 numpy 배열에 견고하고 목록과 동일한 방식으로 처리 해야하는 경우 사용해야합니다
import numpy as np
isinstance(P, (list, tuple, np.ndarray))
이것은리스트, 튜플 및 numpy 배열의 서브 클래스에 대해 강력합니다.
그리고리스트와 튜플뿐만 아니라 시퀀스의 다른 모든 서브 클래스에도 견고하게하려면
import collections
import numpy as np
isinstance(P, (collections.Sequence, np.ndarray))
목표 값과 isinstance
비교하지 말고 왜 이런 식으로 일을해야 type(P)
합니까? 다음은 NewList
간단한 하위 클래스 인의 동작을 만들고 연구하는 예 입니다.
>>> class NewList(list):
... isThisAList = '???'
...
>>> x = NewList([0,1])
>>> y = list([0,1])
>>> print x
[0, 1]
>>> print y
[0, 1]
>>> x==y
True
>>> type(x)
<class '__main__.NewList'>
>>> type(x) is list
False
>>> type(y) is list
True
>>> type(x).__name__
'NewList'
>>> isinstance(x, list)
True
에도 불구 x
하고 y
별로 처리, 동일로 비교 type
다른 동작이 발생할 것입니다. 그러나, 이후에는 x
서브 클래스의 인스턴스 인 list
사용, isinstance(x,list)
원하는 동작 및 취급 부여합니다 x
과 y
동일하게한다.
type
?