본문 바로가기

파이썬/3. 객체지향 프로그래밍

(6)
파이썬 연산자 오버로딩(operator overloading) 연산자 오버로딩(Operator Overloading) 인스턴스 객체끼리의 연산을 위해 기존의 연산자 기능을 중복하여 정의한다. class Cal: def __init__(self, num): self.num = num n = Cal(1) n + 1 # TypeError: unsupported operand type(s) for +: 'num' and 'int' # 지원하지 않는 연산자 타입이라 나온다. 위와 같이 지원하지 않는 연산자 타입을 인스턴스 객체가 서로 연산할 수 있게 다시 정의한다. class Cal: def __init__(self, num): self.num = num def __add__(self, num): # + 연산자를 정의한다. self.num += num n = Cal(1) n..
파이썬 메서드 오버라이딩(Method Overriding)과 다형성(Polymorphism) 오버라이딩(Overriding) 상속에서 쓰이는 개념 부모 클래스의 메소드를 자식 클래스에서 재정의 하는 것. 이름이 같은 메소드가 자식 클래스에서 사용되면 부모 클래스 메소드는 무시된다. 같은 이름의 함수가 있으면 자식의 함수가 우선 참고) 파이썬의 경우 오버로딩 불가능 class Parent: def hi(self): print("하이") class Child(Parent): def hi(self): print("안녕하세요") a = Child() a.hi() # "안녕하세요" # 부모 클래스 메서드는 출력하지 않는다. super를 사용하면 호출이 가능하다. class Parent: def hi(self): print("하이") class Child(Parent): def hi(self): super..
파이썬 클래스 상속, 합성과 통합 상속(Inheritance)(IS-A) 자식 클래스(sub class)가 부모 클래스의 내용(속성과 메소드)를 물려받는 것. class Parrent: # super class name = "이름" age = "나이" language = "언어" def show(self): print("부모 클래스") class child(Parrent): # sub class def __init__(self, name, age, code): self.name = name self.age = age self.code = code def show_name(self): print("이름 : ", self.name) a = child('이정개', '23', '파이썬') a.show() # "부모 클래스" a.show_name..
파이썬 캡슐화와 정보은닉 캡슐화(encapsulation) 클래스를 정의할때 내부 속성과 메서드를 묶어서 하나의 단위로 처리하는 것 객체지향 프로그래밍의 주요 특징중 하나 외부의 영향을 받지않아 큰 프로젝트를 만들 때 용이 정보은닉(information hiding) 클래스 멤버를 정의할 때 접근을 제한하여 잘못된 상태를 방지함. __private 해당 형식 내부에서만 접근 가능 class Information_hiding: def __init__(self, name): self.__name = name def get_name(self): return self.__name order = Information_hiding('이정개') order.__name # AtributeError 인스턴스(instance) 클래스에 의해 만들..
파이썬 클래스, 멤버, 메서드 파이썬의 객체지향 프로그래밍에 대해 알아보자. 클래스 객체지향 프로그래밍의 기본 단위 속성(상태)와 메서드(행동)을 갖는다. 객체의 구조와 행동을 정의 초기화를 통해 제어 복잡한 문제를 다루기 쉽게 만든다. 자세한 내용은 다음 포스팅에서. 멤버 =클래스 내부 변수(멤버 변수) method, property, class variable, instance variable, initinalizer, destructor 등이 멤버이다. 메서드 =클래스 내부 함수 크게 인스턴스 메서드, 클래스 메서드, 정적 메서드로 구성 초기자(Initializer) __init__()의 형태 클래스로 객체를 만들 때마다 인스턴스 변수를 초기화하기 위해서 실행 self의 형태로 변수를 할당하여 계속 사용할 수 있게 준비한다. 인..
파이썬 객체지향 프로그래밍 객체지향 프로그래밍에 대해 알아보자. 그전에 객체지향 프로그래밍은 무엇일까? 비교 대상이 있으면 이해가 쉽다. 절차지향 프로그래밍과 객체지향 프로그래밍을 비교해보자. 절차지향 프로그래밍 말 그대로 순차적인 처리가 중시되는 프로그래밍 프로그램 전체가 유기적으로 연결됨 컴퓨터의 처리 방식과 유사해 빠른 속도가 장점 ex) C, 코볼 파스칼, 포트란 등 객체지향 프로그래밍(Object Oriented Programming) 개발하고자 하는 것을 기능별로 묶어 모듈화하는 프로그래밍 방식 중복된 연산을 하지 않고 모듈을 재활용하여 하드웨어 처리량 절약 ex) Python, C++, C#, JAVA 등 매우 많다 OPP의 4가지 특성 추상화(Abstraciton) 공통의 속성이나 기능을 묶어 이름을 붙이는 것 OO..