파이썬/클래스

파이썬 클래스

watervin 2022. 1. 12. 18:40

클래스 정의

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()

'파이썬 > 클래스' 카테고리의 다른 글

파이썬 클래스 2  (0) 2022.01.14
파이썬 클래스 2  (0) 2022.01.13