클래스 정의
class 키워드로 정의
대문자로 시작하는 경우가 많음
파스칼 케이스
class Account:
def __init__(self,balance):
self.balance = balance
def deposit(self,money):
self.balance += money
def inquire(self):
print(f'잔액은 {self.balance}원 입니다.')
def main():
account = Account(8000)
account.deposit(1000)
account.inquire()
shihan = Account(8000)
shihan.deposit(1000)
shihan.inquire()
nonghyup = Account(12000000)
nonghyup.inquire()
main()
|
__init__(self)
클래스의 인스턴스를 생성할 때 자동으로 호출
멤버 변수 정의 및 초기화 역할
class 이름:
def __init__(self,초기값):
멤버초기화
메서드 정의
객체 = 객체명(인수)
스택
class Stack :
def __init__(self) -> None:
self.data = []
def push(self,value):
self.data.append(value)
def pop(self):
assert len(self.data) > 0, '스택이 비었습니다.'
return self.data.pop()
def read_top(self):
top = self.data[-1]
#top len(self.data)
return top
def is_empty(self):
return len(self.data) == 0
def main():
stack = Stack()
print(stack.read_top)
|
큐
class Queue:
def __init__(self):
self.data = []
def put(self,value):
self.data.append(value)
def get(self):
assert not self.is_empty() , '큐가 비었습니다.'
return self.data.pop(0)
def read_front(self):
assert not self.is_empty() , '큐가 비었습니다.'
return self.data[0]
def is_empty(self):
return len(self.data) == 0
def main():
q = Queue()
q.put(1)
q.put(10)
q.put(100)
print(q.get())
print(q.get())
print(q.get())
if(not q.is_empty()):
print(q.get())
main()
|
온도센서
#온도 센서(온도계)
#클래스명 : Temperature
# 데이터 : 온도(value),기록(온도,측정시간),위치,측정가능범위
# 기능 : 측정하기,범위 초과시 ..., 기록보여주기()
import random
from datetime import datetime
import time
class Temperature:
def __init__(self,location,min_value,max_value) -> None:
self.value = None
self.records = []
self.location = location
self.min_value = min_value
self.max_value = max_value
def measure(self):
#min_value ,max_value 사이의 랜덤한 값으로 측정되게..
#값은 소수점 둘째자리까지
self.value =random.uniform(self.min_value,self.max_value)
now = datetime.now()
self.records.append((now,self.value))
return now,self.value
#히터
# 클래스 : Hitter
# 데이터 : 온도 장소
# 동작/ 기능 : 켜기, 끄기, 운영 , 온도설정
class Hitter:
def __init__(self,location) -> None:
self.temp = Temperature(location,-5,35)
self.location = location
self.criteria = 19
self.status = False
def turn_on(self):
self.status = True
print(f"보일러 켜짐 {self.temp.value}")
def turn_off(self):
self.status = False
print(f"보일러 꺼짐 {self.temp.value}")
def run(self):
#온도를 측정해서 기준 온도 이하이면 보일러 켜기,
#기준 온도 이상이면 보일러 끄기
now,temp = self.temp.measure()
if temp < self.criteria and self.status == False:
self.turn_on()
elif temp >= self.criteria and self.status == True:
self.turn_off()
else :
pass
def set_criteria(self,temp):
self.criteria = temp
def main():
#1초 간격으로 온도를 측정해서
#장소 , 측정한 시간, 온도를 출력하세요.
hitter = Hitter('안방')
hitter.set_criteria(15)
while True :
time.sleep(1)
hitter.run()
room_temp = Temperature("안방",-5,35)
while True:
time.sleep(1)
now,value = room_temp.measure()
print(f'{room_temp.location}{now}{value}')
main()
|