01 객체 지향 프로그래밍 개요
- OOP의 ‘객체’
- 속성 및 메소드 포함
- OOP의 구성요소
- 클래스: 개체의 청사진
- 인스턴스: 클래스로 구현된 객체
02 파이썬의 객체
- 클래스 선언
- 클래스 SoccerPlayer(개체):
- 클래스: 클래스 예약어
- SoccerPlayer: 클래스 이름
- 개체: 상속된 부모 클래스입니다. 객체 클래스는 python3에서 자동 상속되므로 생략할 수 있습니다.
- Python 명명 규칙 참조
- snake_case (공백에는 _ 사용) → 변수 이름/함수 이름의 명명 방법
- CamelCase(단어의 첫 글자를 대문자로 표기) → 클래스 이름의 작명 방식
- 클래스 SoccerPlayer(개체):
- 속성 추가
- Python에서 ‘__’의 의미를 참조하십시오.
- 특수 스케줄링 함수 및 변수에 사용
- 전. _main__, __init__ 등
- 함수 이름을 변경할 때 사용(이름 맹글링)
- 특수 스케줄링 함수 및 변수에 사용
- Python에서 ‘__’의 의미를 참조하십시오.
def __str__(self): # str 함수를 새로 정의
return "Hello World~!"
- 구현 방법
- 기존 함수를 정의하는 것과 비슷하지만 클래스의 메소드로 인식되기 위해서는 self를 파라미터로 추가해야 합니다.
- self: 생성된 인스턴스 자체
- 기존 함수를 정의하는 것과 비슷하지만 클래스의 메소드로 인식되기 위해서는 self를 파라미터로 추가해야 합니다.
03 OOP 속성
03-1 상속
- 부모 클래스에서 특성과 메서드를 상속하는 자식 클래스 만들기
class Person(object): # 부모 클래스
def __init__(self, name, age):
self.name = name
self.age = age
class Korean(Person): # 자식 클래스
pass
first_Korean = Korean("jieun", 23)
print(first_Korean.name) # jieun
class Person(object): # 부모 클래스 Person 선언
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
def about_me(self):
print("저의 이름은 ", self.name, "이구요, 제 나이는 ", str(self.age), "살입니다.")
class Employee(Person): # 자식 클래스 Employee 선언
def __init__(self, name, age, gender, salary, hire_date):
super().__init__(name, age, gender) # 부모 클래스의 attribute 상속
self.salary = salary
self.hire_date = hire_date
def do_work(self):
print("열심히 일을 합니다.")
def about_me(self): # 부모 클래스의 method 재정의
super().about_me() # 부모 클래스의 method 상속
print("제 급여는 ", self.salary, "원 이구요, 제 입사일은 ", self.hire_date," 입니다.")
first_employee = Employee("지은", "23", "여", "1000000", "2023/3/6")
first_employee.about_me()
03-2 다형성 다형성
- 같은 이름을 가진 메서드에 대해 다른 내부 논리 작성
03-3 가시성
- 가시성 가시성
- 객체 정보 공개 범위 통제
- 누군가 개체 정보에 액세스할 수 있는 경우 다음과 같은 문제가 발생할 수 있습니다. 나. 객체의 이용자가 객체를 임의로 수정하거나 불필요한 정보를 제공하는 경우 다.
- 캡슐화 참조
- 캡슐화 또는 정보 숨기기
- 객체의 속성과 메서드 결합 + 객체 구현의 일부 숨기기
- 개인 속성 및 속성 데코레이터
- 비공개 속성으로 만들려면 속성 앞에 __를 추가합니다.
- Wallet 메소드를 통해 비공개 속성인 Wallet에 대한 액세스를 허용합니다.
class Person:
def __init__(self, name, age, address, wallet):
self.name = name
self.age = age
self.address = address
self.__wallet = wallet # __wallet: private attribute
@property
def wallet(self): # property decorator: private attribute를 return해줌
return self.__wallet
03-4 꾸미다
- 일류 객체
- 일급 함수 또는 일급 객체
- 변수 또는 데이터 구조에 할당할 수 있는 객체
- 매개변수로 전달 가능 + 반환 값으로 사용
→ Python의 함수는 일급 함수입니다.
- 내부 기능
- 함수 안의 또 다른 함수