본문 바로가기

컴퓨터 관련/파이썬

[파이썬] 9. 객체지향

728x90
반응형

1. 클래스

  • 코드를 어떤 행위에 따라 분리함
  • 반복적으로 불러와서 수행해야 하는, 코드들을 함수로 묶음

1.1. 기본형

  • 클래스 만들기
class name:
  def function (self):
    Variable
  statement

# name: 클래스의 이름
# function: 함수의 이름
# Variable: 생성자 안에서, 클래스에 쓰일 변수를 초기화
# statement: 클래스 하위에 존재하는 코드
# self: 호출한 객체 자신을 의미함. 보통은 첫번째 매개변수로 많이 부여함.
  • 클래스 인스턴스 만들기
# 인스턴스 선언하기
instance = classname()
# 클래스의 함수에 접근하기
instance.function()

# instance: 클래스의 주소를 저장하는 변수
  • self 키워드

    • self는 객체 자신을 의미한다. 자세한 설명 보기
    • 객체에 저장되어 있는 변수를 불러올 수 있다.
  • private 멤버

    • __ 키워드를 통해, private로 설정가능
    • 객체 내부에서만 private멤버에 접근이 가능

2.2. 예시

class calculate:
    __num3 = 2 # private 멤버 변수
    def __init__(self, num1, num2): # 생성자
        self.num1 = num1
        self.num2 = num2
    # 인자로 준 값이 self로 넘어가게 된다.
    def plus(self):
        return self.num1 + self.num2
    def sub(self):
        return self.num1 - self.num2
    def multi(self):
        print("나눗셈 : ",self.__divide())
        return self.num1 * self.num2
    def __divide(self): # private 메소드
        return self.num1 / self.__num3

c1 = calculate(10,20)
print("덧셈 : ",c1.plus())
print("뺄셈 : ",c1.sub())
print("곱셈 : ",c1.multi())

c2 = calculate(30,40)
print("덧셈 : ",c2.plus())
print("뺄셈 : ",c2.sub())
print("곱셈 : ",c2.multi())

2. 상속

2.1. 기본형

  • 이미 선언되어 있는 클래스를 가져다 쓰는 기법
  • 원래 있는 클래스는 부모클래스, 부모 클래스의 내용을 받는 클래스를 자식클래스라고 한다.
  • 자식 클래스는 부모클래스의 멤버변수, 함수를 사용할 수 있다. 그 역은 불가능하다.
class name(parent class):
  statement
# name: 클래스의 이름
# parent class: 부모 클래스

2.2. 예시

class company:
  def print(self):
    print("회사입니다.")

class apple(company):
  pass

c = apple()
c.print() # company 클래스의 print 함수 실행

2.3. 오버라이딩

  • 부모클래스에 선언된 함수와 자식클래스의 선언된 함수의 이름이 같다면,
  • 자식클래스의 함수를 우선 실행하는 기법
class company:
  def print(self):
    print("회사입니다.")

class apple(company):
  def print(self):
    print("Apple은 회사입니다.")

c = apple()
c.print() # apple 클래스의 print 함수 실행

2.4. 추상클래스

  • 클래스의 최소 스펙을 정의한 함수. (자바의 인터페이스와 같은 개념이다.)
  • 추상 클래스의 메소드는 내용은 없지만, 상속받는 클래스에서 내용이 정의됨
  • abstractmethod가 import되어 있어야 함
  • @abstractmethod 데코레이터로 추상메소드를 표시해야 함
from abc import abstractmethod

class computer():
    @abstractmethod
    def cpu(self): 
        pass
    @abstractmethod
    def motherboard(self):
        pass


class my_pc(computer):
    def cpu(self):
        print("라이젠")
    def motherboard(self):
        print("기가바이트")

pc = my_pc()
pc.cpu()
pc.motherboard()
반응형

'컴퓨터 관련 > 파이썬' 카테고리의 다른 글

[파이썬] 10. 고급기능  (2) 2024.01.07
[파이썬] 8. 함수  (1) 2024.01.06
[파이썬] 7. 파일 입출력  (1) 2024.01.06
[파이썬] 6. 조건문과 반복문  (0) 2024.01.06
[파이썬] 5. 딕셔너리  (0) 2024.01.06