프로그래밍/python 8

Advanced Python(1) - List

https://youtu.be/QLTdOEn79Rc 위의 동영상을 한국어로 번역해서 정리하려고 한다. 리스트는 순서가 있고, 변경 가능한 데이터 유형입니다. 집합과 달리 리스트는 중복 요소를 허용합니다. 데이터 순서를 보존하고 데이터를 반복하는 데 유용합니다. 리스트는 대괄호로 작성됩니다. my_list = ["banana", "cherry", "apple"] Python의 기본 내장 데이터 유형과 비교 리스트는 순서가 정해져있고 변경될 수 있는 모음입니다. 중복된 내용을 허용합니다. 튜플은 순서가 정해져 있고 불변하는 모음입니다. 중복된 내용을 허용합니다. 집합은 순서가 없고, 인덱싱되지 않은 모음입니다. 중복된 내용도 허용하지 않습니다. 딕셔너리는 순서가 없고, 변경 가능하며 인덱스된 모음입니다. 중..

OOP 5탄(Getter, Setter, Properties)

getter와 setter을 좀더 파이썬적으로 작성하는 방법이 있다. @을 사용하면 같은 이름으로 getter과 setter을 사용할 수 있다. class SoftwareEngineer: def __init__(self): self._salary = None #getter @property def salary(self): return self._salary #setter @salary.setter def salary(self, value): self._salary = value se = SoftwareEngineer() se.salary = 6000 print(se.salary) 추가적으로 삭제하는 @를 만든다. 그러면 자료를 설정, 가져오기, 삭제 모두 할 수 있다. class SoftwareEngin..

OOP 4탄(Encapsulation, abstraction)

캡슐화를 통해서 내부에 있는 변수에 대한 접근은 막아준다. 파이썬에서는 _를한번만 사용하여 변수를 정의하는 것을 선호한다.(PEP8) __가 된다면 완전히 접근을 막기 때문에 유연한 프로그램(테스팅에서 사용)을 할 수 없다. _가 들어간 변수라면 테스팅할때 사용하는 것은 괜찮지만 실제 작성하는 코딩에서는 무조건 직접 언급하는것을 피해야한다. _x는 보호되는 속성이라고 불린다. __x는 비공개 속성이라고 불린다. 아래의 코드를 보면 연봉과 몇개의 버그를 수정했는지에 대한 정보를 쉽게 보여주고싶지 않다. 따라서 _변수를 이용하여 캡슐화를 한 형태이다. class SoftwareEngineer: def __init__(self, name, age): self.name = name self.age = age s..

OOP 3탄 (Inheritance, polymorphism)

상속은 한 클래스가 다른 클래스의 속성과 메서드를 취하는 프로세스이다. 새롭게 생성된 클래스를 자식 클래스라고 하고 다른 하나를 부모 클래스라고 한다. 아래의 코드를 보면 직원이라는 클래스에 소프트웨어 엔지니어와 디자이너가 있다. 이때 직원의 클래스를 부모 클래스라고하고 소프트웨어 엔지니어와 디자이너 클래스를 자식 클래스라고한다. 상속은 자식 클래스 이름 옆에 괄호()를 이용하여 구현한다. class Employee: pass class SoftwareEngineer(Employee): pass class Designer(Employee): pass 아래의 코드를 보면 자식클래스에서 부모클래스에 접근을 하여 잘 작동하는 것을 알 수 있고, 부모클래스를 받아 사용한다는 의미로 상속이라고 한다. class ..

OOP 2탄(Functions In Classes)

클래스에서 함수를 사용하면 리스트보다 이유를 더욱 명확하게 설명할 수 있다. 아래의 코드처럼 Max와 Lisa는 코드를 작성하고있다는 함수를 잘 불러오고 있다. 하지만 필립은 코드를 작성하고있다고 표현되지 말아야 합니다.(직업이 디자이너 이니깐) 만약 이렇게 함수를 사용하면 누가 와도 이 함수를 불러서 사용할 수 있으므로 클래스 내부에 사용하여 불필요한 함수의 접근을 막을 수 있습니다. se1 = ["Software Engineer", "Max", 20, "junior", 5000] se2 = ["Software Engineer", "Lisa", 25, "senior", 5000] d1 = ["Designer", "Philipp"] def code(se): print(f"{se[1]} is writing..

OOP 1탄(Class vs Instance)

List의 한계 여러 객체를 만들 때 아래처럼 코드를 순차적으로 추가한다면 오류가 날 가능성이 높다. 또한 직업이 Software Engineer이 아니라 Designer인 경우라면, 또는 복잡한 객체들을 나타내는 경우. 따라서 List는 완벽한 데이터 구조가 아니고 클래스가 나온 이유이다. se1 = ["Software Engineer", "Max", 20, "junior", 5000] se2 = ["Software Engineer", "Lisa", 25, "senior", 5000] Class 클래스는 기본적으로 무엇을 정의해야하는 청사진이고 파이썬에서 클래스를 정의하는 방법은 아래와 같다. class SoftwareEngineer: pass Instance 클래스는 데이터 구조의 청사진일뿐이지만 인..