class HousePark:
lastname = '박'
def setname(self, name):
self.fullname = self.lastname + name
def travel(self, where):
print("%s, %s 여행을 가다."%(self.fullname,where))
pey = HousePark()
pey.setname('응용')
pey.travel('제주도')
박응용, 제주도 여행을 가다.
pey = HousePark()
pey.travel('부산') # self.fullname 지정안해줘서 에러남
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-5-8e59ab12e050> in <module>
1 pey = HousePark()
----> 2 pey.travel('부산') # self.fullname 지정안해줘서 에러남
<ipython-input-3-15af788ca34a> in travel(self, where)
5
6 def travel(self, where):
----> 7 print("%s, %s 여행을 가다."%(self.fullname,where))
AttributeError: 'HousePark' object has no attribute 'fullname'
#클래스 변경
class HousePark:
lastname = '박'
def __init__(self, name):
self.fullname = self.lastname + name
def travel(self, where):
print("%s, %s 여행을 가다."%(self.fullname,where))
pey = HousePark('응용')
pey.travel('부산')
박응용, 부산 여행을 가다.
클래스의 상속
class HouseKim(HousePark):
lastname = '김'
juliet = HouseKim('줄리엣')
juliet.travel('제주도')
김줄리엣, 제주도 여행을 가다.
메서드 오버라이딩
오버라이딩 : 상속 대상 클래스의 멤버메소드와 이름은 같지만 다른 연산을 하는 메소드 정의
오버로딩 : 같은 함수의 이름을 가지지만 매개변수 타입이 다르거나 개수가 달라야한다.
class HouseKim(HousePark):
lastname = '김'
def travel(self, where, day):
print("%s, %s여행 %d일 간다."%(self.fullname, where, day))
juliet = HouseKim('줄리엣')
juliet.travel('제주도') # 오버라이딩했기때문에 재정의한 메서드에 맞춰서 사용해야한다.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-18-4f70c6482a54> in <module>
1 juliet = HouseKim('줄리엣')
----> 2 juliet.travel('제주도') # 오버라이딩했기때문에 재정의한 메서드에 맞춰서 사용해야한다.
TypeError: travel() missing 1 required positional argument: 'day'
juliet.travel('제주도',3)
김줄리엣, 제주도여행 3일 간다.
pey = HousePark("응용")
juliet = HouseKim("줄리엣")
class HousePark:
lastname = '박'
def __init__(self, name):
self.fullname = self.lastname + name
def travel(self, where):
print('%s, %s여행을 가다.'%(self.fullname, where))
def love(self, other):
print("%s, %s 사랑에 빠졌네"%(self.fullname, other.fullname))
def __add__(self, other): # 연산자 오버로딩
print("%s, %s 결혼했네"%(self.fullname, other.fullname))
class HouseKim(HousePark):
lastname = '김'
def travel(self, where, day):
print("%s, %s 여행을 %d일 가다."%(self.fullname, where, day))
pey = HousePark('응용')
juliet = HouseKim('줄리엣')
pey.love(juliet)
pey+juliet #연산자 오버로딩
박응용, 김줄리엣 사랑에 빠졌네
박응용, 김줄리엣 결혼했네
'Programming > Python' 카테고리의 다른 글
Python 내장 함수 (0) | 2019.12.26 |
---|---|
Python 예외 처리 (0) | 2019.12.26 |
Python 클래스 (0) | 2019.12.26 |
Python 파일 입출력 (0) | 2019.12.26 |
Python 사용자 입력, 출력 (0) | 2019.12.26 |