반응형
[주절주절]
😤
[Today I Learned]
# Python isinstance
주어진 인스턴스가 특정 클래스 혹은 데이터 타입인지 검사해주는 함수이다. isinstance(인스턴스, 클래스/데이터 타입)으로 사용한다.
result = isinstance(1,int)
print(result)
> True
result = isinstance([1,2,3],list)
print(result)
> True
isinstance 함수가 type()에 대해 갖는 장점은 상속 관계도 확인할 수 있다는 점이다.
class Soccer(self):
...
class Play(Soccer):
...
p = Play()
type(p) == Play
> True
type(p) == Soccer
> False
isinstance(p, Play)
> True
isinstance(p, Soccer)
> True
isinstance(Play(), Soccer)
> True
isinstance(Play, Soccer)
> False
isinstance(p, (Play,Soccer,Play(),Soccer()) # tuple 안의 어떤 객체와 같으면 True 리턴
> True
# Json.dumps; default
Json.dumps() 메소드는 JsonPython object를 적절한 Json형식의 문자열(str)로 변환해준다. (Json.dumps()와 Json.dump()는 다른 메소드이다.) Json.dumps()에는 default라는 파라미터가 있는데, default에 전달하는 인자는 json 모듈이 알아들을 수 없는 타입의 변수가 들어간 상황을 처리하는 함수이다. 예를 들자면, np.float32, np.int64와 같은 type의 변수를 json string으로 변환하려면 에러가 나기 때문에, float형, int형 등으로 바꾸는 작업이 사전에 요구된다.
def write_json(data, fname):
def _conv(o):
if isinstance(o, (np.int64, np.int32)):
return int(o)
if isinstance(o, (np.float64,np.float32)):
return float(o)
raise TypeError
json_str = json.dumps(data, ensure_ascii=False, default=_conv)
f.write(json_str)
여러 유형의 데이터를 이용하더라도 위와 같이 각 경우에 따른 대처법을 json 모듈에게 알려줌으로써 문제를 해결 할 수 있다.
[질문 노트]
- 파이썬의 int, float와 Numpy의 int, float (np.int, np.float)의 차이는 무엇일까?
- 어떤 연산 과정이 위와 같은 type의 차이를 만드는 것일까?
반응형
'컴린이 일기장 > Today I Learned' 카테고리의 다른 글
[TIL] 0824 AdaIN / U-GAT-IT 논문 정리 (3) | 2020.08.23 |
---|---|
[TIL] 0819 BAGAN 논문 정리 (0) | 2020.08.19 |
[TIL] Python List Comprehension (0) | 2020.06.18 |
[TIL] Python 내장 함수 (0) | 2020.06.15 |
[TIL] CycleGAN 이용해 사진 ↔ 고흐의 그림 변환하기 (0) | 2020.04.07 |