728x90
반응형
객체 지향 프로그래밍
클래스, 객체, 인스턴스
- 클래스 : 객체를 설계하는 설계도 역할
- 객체 : 실질적인 물건 또는 개념, 속성(변수)과 행동(함수)으로 구성된다.
- 인스턴스 : 클래스를 사용하여 실제로 만들어진 것
비유하자면, **클래스**는 일정한 모양을 가진 **''붕어빵 틀''**이라고 할 수 있다. **객체/인스턴스**는 **붕어빵틀에 찍어낸 ''붕어빵''**이다. 형태는 일정하지만 내부에 팥이 들어있을 수도, 슈크림이 들어있을 수 있듯, 다양한 종류가 있다.
- 함수만으로는 작성 시, 객체가 여러개일 경우 대응이 어렵기 때문에 클래스로 작성한다.
클래스의 정의
class Calc:
def setData(self,first, second):
self.first = first
self.second = second
def add(self):
return self.first +self.second
- 클래스 내부에 있는 함수는 method라고 부른다.
- 객체변수 / 클래스변수로 구분
- self를 사용하여 클래스 내부에서 사용되는 지역변수로 선언한다.(영역 구분)
- 예시
-
class Calc: def setData(self,first, second): self.first = first self.second = second def add(self): return self.first +self.second def sub(self): return self.first - self.second def mul(self): return self.first * self.second def div(self): return self.first / self.second calc =Calc() calc.setData(4,2) calc.add() calc.sub()
생성자(constructor), 변수
- 생성자 '_'가 있는 함수는 자동으로 나타나는 특수한 함수
class Calc:
def __init__(self,first,second):
self.first = first
self.second = second
def setData(self,first, second):
self.first = first
self.second = second
def add(self):
return self.first +self.second
def sub(self):
return self.first - self.second
def mul(self):
return self.first * self.second
def div(self):
return self.first / self.second
상속
- 다른 클래스로부터 동일한 내용을 가져오는 것
class childcalc(Calc):
pass
c = childcalc(4,2)
c.add()
#출력값 6
#위에서 선언한 클래스를 상속받아 값을 나타낸다.
- Calc클래스의 내용을 상속받아 pow라는 함수를 추가한다.
class childcalc(Calc):
def pow(self):
return self.first**self.second
c = childcalc(4,2)
c.pow()
#출력값 16
- 부모클래스에서 발생하는 오류를 자식 클래스에서 수정하는 방법
예) 위 부모클래스의 div는 0으로 나눌때 에러가 발생한다. 이를 해결하는 safecalc라는 자식클래스
class safecalc(Calc):
def div(self):
if self.second == 0:
return print('0으로는 나눌 수 없습니다.')
else:
return self.first/self.second
연습하기
- Human 이라는 비어있는 클래스 만들기
class Human:
pass
- baby 라는 이름의 객체 만들기
baby= Human()
- 객체를 만들자마자 '문장'이 나오도록 만들기
class Human():
def __init__(self):
print('객체 탄생!')
#생성자(constructor) 활용하기
- 이름, 나이 성별을 가지는 Human클래스를 만들기
class Human():
def __init__(self,name,age,sex):
print('객체 탄생!')
self.name = name
self.age = age
self.sex = sex
c=Human('철수',30,'man')
- Human 클래스에 객체의 정보를 얻는 getinfo 함수 만들기
#Human 클래스에 객체의 정보를 얻는 getinfo 함수 만들기
class Human():
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def getinfo(self):
print(f'name:{self.name}, age:{self.age}, sex:{self.sex}')
c=Human('철수',100,'man')
- 개인정보를 설정하는 함수 setinfo() 만들기
#개인정보를 설정하는 함수 setinfo() 만들기
class Human2():
def __init__(self,name='이름',age='나이',sex='성별'):
self.name = name
self.age = age
self.sex = sex
def getinfo(self):
print(f'name:{self.name}, age:{self.age}, sex:{self.sex}')
def setinfo(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
- Car 클래스 만들기 & Car 클래스를 상속 받는 truck 클래스 만들기 *주의사항 부모 클래스에 있는 객체변수를 자식 클래스에서 사용시에는 반드시 변수 초기화를 해줘야한다.
#Car 클래스 만들기
class Car:
def __init__(self, wheel, engine):
self.wheel = wheel
self.engine = engine
myCar =Car(4,'2000cc')
#Car클래스를 상속해서 Truck클래스 만들기
class Truck(Car):
def __init__(self, wheel, engine, luggage):
super().__init__(wheel, engine)
#부모클래스의 객체변수를 가지고 오는 생성자 'super().__init__()
self.luggage=luggage
728x90
반응형
'BIG DATA STUDY > Python' 카테고리의 다른 글
파이썬 배우기 #9 파이썬 내장함수 (0) | 2022.01.18 |
---|---|
파이썬 배우기 #8 모듈 (0) | 2022.01.17 |
파이썬 배우기 #5 If , While, For , 함수 (1) | 2022.01.12 |
파이썬 배우기 #4 Dictionary, Bool (2) | 2022.01.11 |
파이썬 배우기 #3 List, Tuple (1) | 2022.01.11 |
댓글