나는 이렇게 학습한다/Language 51

Python _ @property로 getter, setter 구현하기 (feat. 캡슐화)

캡슐화 파이썬은 클래스를 작성할 때, 변수나 함수 앞에 '__' 를 붙여 캡슐화, 즉 은닉을 할 수 있습니다. 예를 들어 객체 내 변수에 접근할 때, 일반적으로 다음처럼 '.'과 변수명만으로 쉽게 접근할 수 있습니다. class Robot: def __init__(self, name, num): self.name = name self.num = num robot = Robot('다코', '0001') print(robot.name, robot.num) ''' 결과 >>> 다코 0001 ''' 하지만 이것은 외부에서 변수를 쉽게 조작할 수 있음을 의미합니다. 이를 방지하기 위해 변수앞에 '__'를 붙여 외부에서 접근할 수 없도록 막을 수 있습니다. class Robot: def __init__(self, ..

Python _ @classmethod, @staticmethod 란 무엇인가?

파이썬에서 클래스들을 살펴보면 가끔 뜬금없이 데코레이터가 등장하곤 합니다. 바로 @classmethod, @staticmethod 데코레이터입니다. 이 두 데코레이터를 왜 사용하는지 같이 살펴보겠습니다. 우선 다음처럼 클래스 코드를 작성하고 인스턴스를 만들겠습니다. class Robot: number = '0001' def __init__(self, name): self.name = name def 인스턴스메서드(self): print(f'인스턴스메서드 호출 {self.name}') @classmethod def 클래스메서드(cls): print(f'클래스메서드 호출 {cls.number}') @staticmethod def 스태틱메서드(): print('스태틱메서드 호출') robot = Robot('..

Python _ magic method를 사용하여 객체 커스텀하기

파이썬에는 magic method 라는 것이 있습니다. 흔히 __000__ 형태로 되어 있는 것을 의미하며 이는 파이썬 자체에 내장되어 있는 메서드들입니다. # magic method 예시 '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeo..

Python _ isinstance로 타입을 체크하자.

어떤 객체가 무슨 타입인지를 알려면 type() 메서드를 활용하면 됩니다. 하지만 어떤 타입이 맞는지 참/거짓으로 체크만 하고 싶다면 isinstance()를 활용할 수 있습니다. 사용법은 간단합니다. isinstance 메서드에 첫 번째 인자로 해당 객체를, 두번째 인자로 체크하고 싶은 타입을 넣어주면 됩니다. def 체크_문자열(객체): return isinstance(객체, str) print(체크_문자열('문자')) # >>> True print(체크_문자열(123)) # >>> False 문자열을 넣었을 때는 True, 숫자를 넣었을 때는 False를 반환합니다. def 체크_리스트(객체): return isinstance(객체, list) print(체크_리스트('문자')) # >>> Fals..

JavaScript _ forEach로 배열 반복문 돌리는 방법

배열을 받아 for문을 돌려 배열내 요소들을 찾거나 가공해야하는 경우가 많습니다. (매우매우) 파이썬이야 ' for i in arr: print(i) ' 로 끝나지만 js의 경우 for문내 조건에만 3가지 항목을 넣어야 합니다. // 일반적인 for 문 형태 for (let i = 0; i {console.log(item)} ) // 결과 1 2 3 4 // 두번째 인자를 지정하면 인덱스도 가져올 수 있다...

Python _ 리스트 요소 개수 세기(dictionary, collections)

리스트에 어떤 요소의 개수를 파악해야하는 때가 있습니다. (특히 코딩테스트에서 사용할 일이 많습니다) 그래서 오늘은 요소 개수를 세는 방법을 정리해보고자 합니다. dictionary 사용 # 요소를 세고 싶은 리스트 >>> list = [1,2,3,4,5,5,5,5,5,1,1] # 빈 딕셔너리를 생성 >>> dict = {} # 요소가 딕셔너리에 있다면 += 1, 없다면 = 1 >>> for num in list: if num in dict: # dict.get(num)로 대체가능 dict[num] += 1 else: dict[num] = 1 # {요소(키): 개수(값)} 형태의 딕셔너리 생성 >>> dict {1: 3, 2: 1, 3: 1, 4: 1, 5: 5} 기본 딕셔너리를 사용하는 베이직한 방법입..

JavaScript _ 스프레드 연산자로 배열 합치기

자바스크립트에는 스프레드 연산자라는 것이 있습니다. 형태는 '...arr' 이렇게 생겼습니다. 보통 배열을 합치거나 복사할 때 사용가능하고 함수에도 사용할 수 있습니다. 사용법은 다음과 같습니다. 1. 배열을 합칠 때 let a = [1,2,3,4,5]; let b = [5,5,5,5,5]; let c = [...b, ...a]; console.log(c) >>> [ 5, 5, 5, 5, 5, 1, 2, 3, 4, 5 ] 스프레드 연산자 '점점점'과 배열 변수명을 요소로 넣으면 됩니다. 2. 배열을 복사 할 때 let a = [1,2,3,4,5]; let d = [...a] console.log(d) >>> [ 1, 2, 3, 4, 5 ] 위와 동일한 방법으로 해당 배열을 복사할 수도 있습니다. 이렇게 ..

JavaScript _ 'for문'으로 배열의 합을 구하는 방법

자바스크립트의 경우 배열의 합을 구하는 간단한 내장함수가 없는 것 같습니다. (파이썬 최고..) 라이브러리를 설치하거나 for문 혹은 reduce함수를 사용해야하는데 이번 글에서 for문으로 배열 합을 구하는 함수를 만들어 보겠습니다. 코드부터 볼까요? let a = [1,2,3,4,5]; function sum(a){ let sum = 0; for (let i of a){ sum += i; }; return sum; }; console.log(sum(a)) >>> 15 1. 함수 sum은 배열을 인자로 받습니다. 2. 배열로부터 요소를 뽑아 sum이라는 변수에 반복하여 더합니다. 3. sum 변수를 반환합니다. 이처럼 함수를 미리 작성해두면 Python의 sum() 처럼 배열 합계를 구하는데 사용할 수..

Python _ 딕셔너리 가져오기 메서드 정리

딕셔너리의 get 메서드와 ['키']를 이용해 값을 가져올 수 있습니다. 단 ['키']를 이용해 값을 가져올 경우, 키가 없다면 키 에러를 내뱉으므로 에러를 따로 핸들링 해주어야 합니다. >>> x {'a': 100, 'b': 200, 'c': 300} # x 딕셔너리 키-값 >>> x.get('a') # 'a'키를 가져온다. 100 >>> x.get('d') # 'd', 만약 없는 키를 요청하면 None을 반환한다. >>> >>> type(x.get('d')) >>> x.get('d', 1000) # 없는 키에 두 번째 인자로 기본값을 지정해주면 기본값을 반환한다. 1000 >>> x['a'] # get 뿐만아니라 ['키'] 형태를 이용해 값으르 가져올 수 있다. 100 >>> x['d'] # 단, 이..

Python _ 딕셔너리 추가, 삭제 메서드 정리

setdefault 메서드로 딕셔너리에 '키'와 '값' 추가할 수 있다. >>> x = {} >>> x.setdefault('a') # 딕셔너리에 '키'를 추가한다. >>> x {'a': None} # 기본값은 'None'이다. >>> x.setdefault('b', 100) # 두번째 인자에 '값'을 넣을 수도 있다. >>> x {'a': None, 'b': 100} # '키'와 '값'을 확인할 수 있다. update 메서드를 이용해 딕셔너리 '키'와 '값' 수정할 수 있다.(없으면 키-값 추가) >>> x.update(a=50) # '키'와 '값'을 지정하여 넣을 수 있다. >>> x {'a': 50, 'b': 100} >>> x.update(c=200) # 만약 '키'와 '값'이 없다면 추가된다. ..