작성
·
334
1
class Fishcakemaker:
def __init__(self, **par): # 이것 때문에 오류가 났었구나... # 생성자는 이렇게 써주어야 함 __(_표시 2개)
self.size = 10
self.flavor = "팥"
self.price = 100
if "size" in par: # par라는 parameter에 size의 값이 있으면, 그 페러미터로부터 얻어지는 size의 값을 기본값으로 변경
self.size = par.get("size")
def __del__(self):
print("삭제되었습니다")
def __str__(self): # 이 함수명은 정해져 있음
return "<clss Fishcakemaker (size = {}, flavor = {}, price = {}>".format(self.size, self.flavor, self.price)
def show(self):
print("붕어빵 크기{}".format(self.size))
class MarketGoods(Fishcakemaker): # 위 클래스를 상속받음
def __init__(self, margin = 1000, **kwargs): # 해당 클래스가 받은 parameter를 상속 받은 클래스에게도 집어 넣는다.
super().__init__(**kwargs) # 상속받은 class의 생성자를 호출하기 위해서 super를 씀
self._market_price = self.price + margin # 여기 있는 price는 Fishcakemaker에서 가져온 것
def show(self):
print(self._market_price)
fish1= MarketGoods(flavor = 20, price = 500)
fish1.show()
저는 단지, market price만 구하고 싶었을 뿐인데,
여기서 부모 클래스에 있는 del 메서드가 실행되어서
삭제되었습니다. 라는 문구가 뜹니다.
del fish1이라고 써준 것도 아닌데, 왜 자동으로 출력이
될까요? 감사합니다.
답변 2
0
0
올려주신 코드를 정리해서 실행해봤더니 아무 문제 없이 실행됩니다만...
혹시 들여쓰기나 그런 부분 확인해보셨나요?
제가 수정한 부분은 하나도 없는 코드 입니다.
class Fishcakemaker:
def __init__(self, **par): # 이것 때문에 오류가 났었구나... # 생성자는 이렇게 써주어야 함 __(_표시 2개)
self.size = 10
self.flavor = "팥"
self.price = 100
if "size" in par: # par라는 parameter에 size의 값이 있으면, 그 페러미터로부터 얻어지는 size의 값을 기본값으로 변경
self.size = par.get("size")
def __del__(self):
print("삭제되었습니다")
def __str__(self): # 이 함수명은 정해져 있음
return "<clss Fishcakemaker (size = {}, flavor = {}, price = {}>".format(self.size, self.flavor, self.price)
def show(self):
print("붕어빵 크기{}".format(self.size))
class MarketGoods(Fishcakemaker): # 위 클래스를 상속받음
def __init__(self, margin = 1000, **kwargs): # 해당 클래스가 받은 parameter를 상속 받은 클래스에게도 집어 넣는다.
super().__init__(**kwargs) # 상속받은 class의 생성자를 호출하기 위해서 super를 씀
self._market_price = self.price + margin # 여기 있는 price는 Fishcakemaker에서 가져온 것
def show(self):
print(self._market_price)
fish1= MarketGoods(flavor = 20, price = 500)
fish1.show()