클래스(class):
프로그램에서 만들려고 하는 대상(객체)이 가져야 할
속성(데이터)과 기능(함수)을 묶은 데이터타입
※ 클래스 사용 예
s = 'hello'
print(s.capitalize())
실행 결과
Hello
class
위가
필드,
아래가
메소드
Class 안에 포함된 함수를 Method라고 함 !!!
메소드(method): 클래스가 가지고 있는 함수
필드(field) : 클레스가 가지고 있는 데이터 (변수)
ex) Capitalize, Upper..
# TV 소프트웨어 작성
# TV 속성(데이터): 채널, 음량, 전원
# TV 기능: 채널 변경, 음량 변경, 전원 on/off
class BasicTv:
"""
BasicTv 클래스
"""
def __ini__(self, power, channel, volume):
print('BasicTv 생성자 호출')
self.power = power
self.channel = channel
self.volume = volume
# 클래스 설계(정의)
# 클래스의 객체(instance)를 생성해서 변수에 저장
# 생성자(constructor) 호출, -> 객체(object) 생성
tv1 = BasicTv(power = False, channel=0, volume=0)
# 생성자 : BasicTv
print(tv1)
print(tv1.power)
실행 결과
BasicTv 생성자 호출
<__main__.BasicTv object at 0x0000020D750A1F08>
False
# 클래스 내부에서 정의하는 함수 : 메소드
def powerOnOff(self):
if self.power: # power가 True이면(TV가 켜져 있으면)
self.power = False
print('TV를 끕니다.')
else: # TV가 꺼져 있으면
self.power = True
print('TV를 켭니다.')
tv1.powerOnOff()
tv1.powerOnOff()
tv1.powerOnOff()
실행 결과
TV를 켭니다.
TV를 끕니다.
TV를 켭니다.
def channelUp(self):
if self.channel<100:
self.channel += 1
else:
self.channel = 1
print(f'채널 : {self.channel}')
def channelDown(self):
if self.channel > 1:
self.channel -= 1
else:
self.channel = 100
print(f'채널 : {self.channel}')
tv1.channelDown()
tv1.channelDown()
tv1.channelUp()
tv1.channelUp()
tv1.channelUp()
실행 결과
채널 : 100
채널 : 99
채널 : 100
채널 : 1
채널 : 2
def volumeUp(self):
if self.volume<15:
self.volume += 1
else:
pass
print('Volume:', self.volume)
def volumeDown(self):
if self.volume > 0:
self.volume -= 1
else:
pass
print('Volume:', self.volume)
tv1.volumeDown()
tv1.volumeDown()
tv1.volumeUp()
실행결과
Volume: 0
Volume: 0
Volume: 1
"""
클래스 작성, 객체 생성, 메소드 사용 연습
"""
class Employee:
"""
field: empno, ename, salary, deptno
method : raise_salary(self, pct)
"""
def __init__(self, empno, ename, salary, deptno):
self.empno = empno
self.ename = ename
self.salary = salary
self.deptno = deptno
def raise_salary(self, pct: int) -> int:
"""
salary 인상율인 pct 값을 삽입하면
인상된 연봉 salary를 return 하는 함수
:param pct: int
:return: int
"""
self.salary = self.salary * (1 + pct)
return self.salary
def emp_info(self):
return (f'Employee Number : {self.empno} \n'
f'Employee Name : {self.ename} \n'
f'Salary : {self.salary} \n'
f'Department Number : {self.deptno}')
employee1 = Employee(123, 'scott', 30000, 100)
print(f'Raised_salary : {employee1.raise_salary(0.3)}')
print(employee1.emp_info())
실행 결과
Raised_salary : 39000.0
Employee Number : 123
Employee Name : scott
Salary : 39000.0
Department Number : 100