OOP(객체지향)
'''
#class : 객체를 생성하기 위한 원형(설계도)
-변수(속성)
-메서드(기능)
- 인스턴스 : 객체, object 라고도 하며, 메모리에 class를 로딩(저장)한 것(프로그램 실행상태)
- 생성자 : def __init__
- 클래스 변수 : 객체가 공유하는 변수. 메서드의 외부에 정의함. 자동으로 메모리에 저장됨.
~(클래스명.변수명) 으로 사용 가능
- 인스턴스 변수 : 메서드 내부에 정의함. 현재 객체에만 속함.(클래스 내부에서 접근 가능함.)
'''
#속성(변수) : 바퀴 4개, 핸들 1개, 색=[빨강, 하양, 검정]
#기능(메서드) : 달린다. 멈춘다.
class Car :
fuelType = "gasoline" # 클래스 변수 : 자동으로 메모리에 저장됨.
#생성자
def __init__(self, tire, handle) :
# 변수 생성(인스턴스 변수)
self.tire = tire
self.handle = handle
self.color = ['red', 'white', 'black']
def move(self) : #메서드
print("자동차가 움직인다.")
def stop(self) :
print("자동차가 멈춘다.")
##c = Car (6,2) #class Car을 객체로 만듦
c1 = Car(4,1)
c2 = Car(6,3)
print(c1.tire)
print(c2.tire)
print(Car.fuelType)
class OilBank :
def __init__(self) :
pass
def put(self):
print(Car.fuelType + "을/를 넣습니다.")
o = OilBank()
o.put()
========================================================================================
'''
#★상속 : 클래스의 특성(메서드)을 다른 클래스로 파생시킴.
- 클래스명에 괄호안에 상위 클래스명을 적어서 상속을 할 수 있음
~class 자식 클래스 (부모 클래스) :
- 변수, 메서드를 물려주는(상속을 주는) 클래스 : 부모, 슈퍼, 상위 ...
- 변수, 메서드를 물려받는(상속 받는 클래스) : 자식, 하위, 파생, 서브...
- 부모 클래스의 특성을 자식 클래스에서 사용할 수 있음.
- 자식 클랙스에서 부모 클래스의 메서드를 재정의 할 수 있음(오버라이딩)
'''
class Animal :
def __init__(self) :
self.eye = 2
self.leg = 4
def move(self) :
print("동물이 움직인다.")
def sleep(self) :
print("동물이 잔다.")
class Tiger (Animal) :
def __init__(self) :
super().__init__() #부모 class의 생성자를 호출해야 부모객체의 변수 사용 가능!!
t = Tiger()
t.move()
print(t.eye)
t = Tiger()
t.move()
========================================================================================
'''
#오버라이딩 :
- 부모 클래스의 메서드를 자식 클래스에서 다른 기능을 원하거나 재정의함.
- 함수명은 동일함.
- 파라미터 갯수나 리턴값 형이 동일하지 않아도 됨. 이름만 똑같으면 다 ok
'''
class Animal :
def __init__(self) :
self.eye = 2
self.leg = 4
def move(self) :
print("동물이 움직인다.")
def sleep(self) :
print("동물이 잔다.")
class Tiger (Animal) :
def __init__(self) :
pass
def move(self) :
print("호랑이가 움직인다.")
t = Tiger()
t.move()
========================================================================================
'''
#가비지 컬렉션(Garbage Collection)
- 불필요한 객체를 자동으로 삭제하여 메모리 공간을 비움 처리함.
- 주기적으로 사용하지 않는 것들을 정리하여 메모리 공간을 확보하는 과정을 가비지 컬렉션이라고 함.
- 파이썬에서 가비지컬렉터가 프로그램이 실행중에 불필요한 것을 정리하며, 객체 참조 카운트가 0이 되면 처리함.
- 객체 참조 카운트는 새롭게 할당될 때 증가함.
- Del를 사용하면 객체 참조 카운트는 감소함.
- 객체 참조를 아무곳도 하지 않으면, 즉 객체 참조 카운트가 0이면 가비지 컬렉터가 실행하여 메모리를 확보함.
'''
'''
#데이터 숨김 처리 : 외부에서 특정 변수나 특정 메서드를 안 보이게 처리함.
- 객체의 속성(데이터)을 외부에 노출시키지 않을 수 있음.
~외부(다른 클래스)에서 호출 불가
- 언더스코어 2개(__)로 변수명을 지정함.
- 클래스 내부에서는 self.__메서드명() 으로 사용가능함. (self 제거)
- 클래스 내부에서는 self.클래스변수 으로 사용가능함.
'''
class EmployeeSalary :
def __init__(self, name, salary) :
self.name = name
self.__salary = salary
def getSalary(self) :
print(self.name + "님은 " + str(self.__salary) + "원입니다.")
def __getAnnual(self) :
print("연봉은 " + str(self.__salary * 12) + "입니다." )
hong = EmployeeSalary("홍길동", 3000000)
kim = EmployeeSalary("김유신", 2000000)
hong.getSalary()
kim.getSalary()
print(hong.salary)
hong.__getAnnual()
'파이썬(PYTHON) > 개념정리' 카테고리의 다른 글
[파이썬(Python)] 정규표현식 (0) | 2022.07.30 |
---|---|
[파이썬(Python)] SQL (0) | 2022.07.28 |
[파이썬(Python)] 디렉토리, 예외 처리 (0) | 2022.07.17 |
[파이썬(Python)] 사용자 정의 함수(def), 모듈, 파일 입출력 (0) | 2022.07.16 |
[파이썬(Python)] 함수 - 리스트, 튜플, 딕션너리(사전), 시간 (0) | 2022.07.10 |