OOP
:Object Oriented Programming(객체 지향 프로그래밍)
코드를 클래스 위주로 작성하는 것
class ComedianName:
# 내용 코드
클래스를 쓰는 이유
코드의 구조를 더 효과적으로 구현하기 위해
class 이름은 CamelCase사용
Class의 attribute(속성)
class에 정의되는 공통 요소 = class의 attribute
속성들을 class에서 정의하기 위해서는 __init__
함수를 통해서 정의 해주면 된다.
class Food:
def __init__(self, name, price, types):
self.name = name
self.price = price
self.types = types
class 안에서 정의해주는 함수를 메소드라고 한다.
pastry = Food("패스츄리", 1500 , "bread")
이런식으로 __init__
이라고 메소드 이름을 명확하게 명시하지는 않았지만 클래스가 실체화 될때 자동으로 __init__
메소드가 호출
class Food:
def __init__(self, name, price, types):
사실상 인자는 4개인데 지금 호출된부분을 보면
name, price, types 이렇게 3개뿐이다
그렇다면 self는?
class의 실체(instance)인 객체(object)를 가르킨다.
클래스를 실체화 할때 객체(self)를 자동으로 __init__
함수에 넘겨준다.
__init__
메소드는 클래스가 실체화 될때 자동호출__init__
메소드의 self 파라미터는 클래스가 실체화된 객체를 넘겨주어야 하며, 파이썬이 자동으로 넘겨준다.__init__
메소드의 self 파라미터는 항상 정의되어야 있어야 하며 맨 처음 파라미터로 정의 되어야 한다. 그래야 자동으로 넘겨줄 있다class Food:
def __init__(self, name, price, types):
self.name = name
self.price = price
self.types = types
Parameter로 넘겨진 name, price, types 값을 동일한 이름으로 self 에 저장 하는 이유
나중에 다시 사용하기 위해서
즉, 다른 메소드에서 사용하기 위해서
__init__
메소드 외에 다른 메소드 추가하기
class Food:
def __init__(self, name, price, types):
self.name = name
self.price = price
self.types = types
def eat(self):
return "냠냠"
pastry = Food("패스츄리", 1500 , "bread")
pastry.eat() #냠냠
빵의 이름도 함께 리턴하려면
def eat(self):
return f"{self.name} 냠냠"
pastry = Food("패스츄리", 1500 , "bread")
pastry.eat() #패스츄리 냠냠
class의 이름 : Database
Database 클래스 내부 속성
name : database의 이름
size : 저장할 수 있는 데이터의 max 사이즈. Size를 넘어서는 데이터를 저장할 수 없다.
Database 클래스 내부에 다음의 메소드들을 구현
insert
select
update
delete
class Database:
def __init__(self, name, size):
self.name = name
self.size = size
self.dict = {}
def insert(self, field, value):
if len(self.dict) < self.size: # size보다 dict가 작으면
self.dict.update({field : value}) #update
else:
pass
def select(self, field):
if field in self.dict.keys(): #dict 값 안에 field가 있으면
return self.dict[field] #해당 key 리턴
else:
return None
def update(self, field, value):
if field in self.dict.keys(): #dict 값 안에 field가 있으면
self.dict.update({field : value}) #원하는 값으로 수정
else:
None
def delete(self, field):
if field in self.dict.keys(): #dict 값 안에 field가 있으면
del self.dict[field] #삭제
else:
pass
📍집고 넘어가기
self.dict.update({field : value}) #update
dict.update({key:value})
dict_example = {'홈런볼': 1800, '빈츠': 2500, '화이트하임': 2300}
dict_example.update({'빈츠':3000,'화이트하임':3500})
print(dict_example) #dict_example = {'홈런볼': 1800, 빈츠':3000,'화이트하임':3500}
if '홈런볼' in dict_example:
print(dict_example['홈런볼']) #1800