[Python] 07 Python


01 객체 지향 프로그래밍 개요

  • OOP의 ‘객체’
    • 속성 및 메소드 포함
  • OOP의 구성요소
    • 클래스: 개체의 청사진
    • 인스턴스: 클래스로 구현된 객체


02 파이썬의 객체


  • 클래스 선언
    • 클래스 SoccerPlayer(개체):
      • 클래스: 클래스 예약어
      • SoccerPlayer: 클래스 이름
      • 개체: 상속된 부모 클래스입니다. 객체 클래스는 python3에서 자동 상속되므로 생략할 수 있습니다.
    • Python 명명 규칙 참조
      • snake_case (공백에는 _ 사용) → 변수 이름/함수 이름의 명명 방법
      • CamelCase(단어의 첫 글자를 대문자로 표기) → 클래스 이름의 작명 방식
  • 속성 추가
    • Python에서 ‘__’의 의미를 참조하십시오.
      • 특수 스케줄링 함수 및 변수에 사용
        • 전. _main__, __init__ 등
      • 함수 이름을 변경할 때 사용(이름 맹글링)
def __str__(self):      # str 함수를 새로 정의
	return "Hello World~!"
  • 구현 방법
    • 기존 함수를 정의하는 것과 비슷하지만 클래스의 메소드로 인식되기 위해서는 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의 함수는 일급 함수입니다.

  • 내부 기능
    • 함수 안의 또 다른 함수