프로그래밍/Python
python 4일차 - class(클래스)
비전공개미
2022. 9. 1. 17:50
반응형
SMALL
In [11]:
honk = '빵빵'
color = 'black'
engine = '보통'
honk = '빵빵'
color = 'black'
engine = '보통'
mycar_honk = []
mycar_color = []
mycar_engine = []
mycar_honk.append('띠띠')
mycar_color.append('노랑')
mycar_engine.append('터보')
mycar_honk.append('빵빵')
mycar_color.append('블루')
mycar_engine.append('250cc')
# ----------------------------------------------
class Car:
honk = '빵빵'
color = '검정'
engine = '보통'
carOne = Car() # carOne == object(객체) -> 변수랑 같은의미
carTwo = Car()
carThree = Car()
# carOne.honk
# carOne.color
# carOne.engine
In [14]:
class Car:
honk = '빵빵'
def info(self, color, year): # 맨처음 파라메터는 무조건 self가 들어간다
print('color :', color, "year :", year)
my_car = Car() # my_car == 객체(object) == instance(주체)
my_car.honk
my_car.info("Red", 2022) # self에는 값이 들어가지 않는다
color : Red year : 2022
In [20]:
class Car:
def set_info(self, color, year): # 우리가 만든 변수에 외부에서 들어온 값을 넣어서 적용한다
self.color = color # self.color == member 변수
self.year = year
print(self)
def get_info(self):
return (self.color, self.year)
my_car = Car()
print(my_car)
my_car.set_info('Yellow', 2021)
my_car.color
_color, _year = my_car.get_info()
print(_color, _year)
# you_car = Car() # 각 객체마다 주소가 다르다 my_car와 you_car의 주소가 다름
# print(you_car)
<__main__.Car object at 0x000001F0159EDCD0>
<__main__.Car object at 0x000001F0159EDCD0>
Yellow 2021
In [28]:
# __init__ == 초기화 함수
class Car:
def __init__(self, color, year):
print('__init__ 호출')
self.color = color
self.year = year
def get_info(self):
print(self.color, self.year)
my_car = Car('Green', 2020)
my_car.get_info()
my_car.__init__('red', 2000) # 자동 호출되거나 직접 호출 할 수도 있다
my_car.get_info()
__init__ 호출
Green 2020
__init__ 호출
red 2000
In [34]:
class Calculator:
def __init__(self):
pass
def userInput(self): # 입력만 받는 함수 부분
self.num1 = int(input('첫번째 수 > '))
self.oper = input('연산자 > ')
self.num2 = int(input('두번째 수 > '))
def process(self): # 처리하는 함수 부분
if self.oper == '+':
self.result = self.num1 + self.num2
elif self.oper == '-':
self.result = self.num1 - self.num2
elif self.oper == '*':
self.result = self.num1 * self.num2
elif self.oper == '/':
self.result = self.num1 / self.num2
def resultPrint(self): # 출력하는 함수 부분
print(self.num1, self.oper, self.num2, '=', self.result)
cal = Calculator()
cal.userInput()
cal.process()
cal.resultPrint()
# 각 함수마다 보완 및 수정이 편리하다
첫번째 수 > 5
연산자 > *
두번째 수 > 5
5 * 5 = 25
In [63]:
# 내 풀이
### fruit 클래스 구축
class Fruit:
### 맛(taste), 컬러(color), 크기(size)
def __init__(self, taste, color, size):
self.taste = taste
self.color = color
self.size = size
def get_info(self):
print('맛은', self.taste, '컬러는', self.color, '크기는', self.size)
### 객체 생성
my_fruit = Fruit('spicy','red','minimum')
my_fruit.get_info() ## 왜 빈칸이면 출력되지 않는가??? 빈칸이라도 넣어줘야 실행되네...선생님 설명 참조하기
### 데이터 입력 -> 3개
my_fruit.__init__('sweet', 'green', 'medium')
### 출력
my_fruit.get_info()
맛은 spicy 컬러는 red 크기는 minimum
맛은 sweet 컬러는 green 크기는 medium
In [67]:
# 선생님 풀이
### fruit 클래스 구축
### 맛(taste), 컬러(color), 크기(size)
class Fruit: # class 설계
def __init__(self, taste, color, size):
self.taste = taste
self.color = color
self.size = size
def fPrint(self):
print(self.taste, self.color, self.size)
myFruit = [] # 리스트 생성
### 객체 생성
### 데이터 입력 -> 3개
apple = Fruit('새콤', 'red', 7.1)
myFruit.append(apple) # 리스트에 추가
pear = Fruit('시원', 'Yellow', 10.2)
myFruit.append(pear) # 리스트에 추가
banana = Fruit('달달', 'lightYellow', 19.0)
myFruit.append(banana) # 리스트에 추가
### 출력
for obj in myFruit: # 하나씩 출력
obj.fPrint()
새콤 red 7.1
시원 Yellow 10.2
달달 lightYellow 19.0
반응형
LIST