오버라이딩
양념치킨을 주문하면 맵기를 조절할수있다.
양념치킨의 속성에 맵기라는 것을 추가해보자
생성자 자체를 오버라이딩 해보자!!!
#부모클래스
class Chicken:
def __init__(self, price, chicken):
self.price = price
self.chicken = chicken
def fried(self):
print(f"{self.chicken}을 튀깁니다."
#자식클래스
class 양념chicken(Chicken):
def __init__(self, price, chicken):
super().__init__(price, chicken)
self.spicelevel = (level1, level2, level3) #오버라이딩
def fried(self):
print(f"{self.chicken}을 양념에 버물입니다." #오버라이딩
def addspice(self,number):
print(f"{self.spicelevel[number]}레벨을 더했습니다."
양념치킨 = 양념chicken(12000, "닭")
양념치킨.addspice(1)
chicken클래스에서 __init__()메서드와 fried()메서드를
양념chicken클래스에서 오버라이딩해서 재정의했다.
__init__()의 경우 super()키워드를 사용해서 부모클래스를 호출할수 있다.
클래스 변수
인스턴스들이 모두 공유하는 변수이다
클래스 변수는 클래스 이름으로 접근한다.
#부모클래스
class Chicken:
chicken_limit = 100
def __init__(self, price, chicken):
self.price = price
self.chicken = chicken
Chicken -= 1 #클래스변수
def fried(self):
print(f"{self.chicken}을 튀깁니다."
#자식클래스
class 양념chicken(Chicken):
def __init__(self, price, chicken):
super().__init__(price chicken)
self.spicelevel = (level1, level2, level3)
def fried(self):
print(f"{self.chicken}을 양념에 버무립니다." #오버라이딩
def addspice(self,number):
print(f"{self.spicelevel[number]}레벨을 더했습니다."
chicken_limit = 100은 클래스변수로 객체가 생성될 때마다 변하게 된다.
상속과 클래스변수를 이용한 예제코드
class Chicken:
chicken_limit = 100
income = 0
def __init__(self, price, chicken_order):
self.price = price
self.chicken_order = chicken_order
Chicken.chicken_limit -= chicken_order
Chicken.income += price*chicken_order
def fried(self):
print(f"{self.chicken_order}를 튀깁니다.")
class Yangnyeomchicken(Chicken):
def __init__(self, price,chicken_order):
super().__init__(price, chicken_order)
self.spicyLevel = (0,1,2,3,4)
def fried(self, specy_Level):
print(f"{self.chicken_order}를 튀깁니다.")
print(f"{self.chicken_order}를 {self.spicyLevel[specy_Level]}맵기의 양념으로 버무립니다.")
class Garlicchicken(Chicken):
def __init__(self, price, chicken_order):
super().__init__(price, chicken_order)
def fried(self):
print(f"{self.chicken_order}를 튀김니다.")
print(f"{self.chicken_order}를 마늘소스에 버무립니다.")
fried = Chicken(10000, 3)
fried.fried()
print(fried.chicken_limit)
ychicken = Yangnyeomchicken(10000, 3)
ychicken.fried(1)
print(ychicken.chicken_limit)
gchicken = Garlicchicken(12000, 2)
gchicken.fried()
print(gchicken.chicken_limit)
print(Chicken.income)
클래스 변수를 이용해서 치킨을 판매했을 경우 수익을 계산하는 코드를 짜보았다.