Python 345

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, ..

Delete occurrences of an element if it occurs more than n times

Description: Enough is enough! Alice and Bob were on a holiday. Both of them took many pictures of the places they've been, and now they want to show Charlie their entire collection. However, Charlie doesn't like these sessions, since the motive usually repeats. He isn't fond of seeing the Eiffel tower 40 times. He tells them that he will only sit during the session if they show the same motive ..

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..