반응형
method override
- 부모 클래스의 method를 재정의
- 하위 클래스(자식 클래스)의 인스턴스 호출 시, 재정의된 메소드가 호출됨
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, minutes):
print('{}은 {}분 동안 잡니다.'.format(self.name, minutes))
def work(self, minute):
print('{}은 {}분 동안 일해요.'.format(self.name, minute))
class Student(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
print('{}은 {}분 동안 공부합니다.'.format(self.name, minute))
class Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
print('{}은 {}분 동안 일해요.'.format(self.name, minute))
lee = Student('이순신', 35)
lee.eat('김밥')
lee.sleep(30)
lee.work(60)
kim = Employee('김상식', 33)
kim.eat('게장')
kim.sleep(387)
kim.work(123123123)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self, food):
print('{}은 {}를 먹습니다.'.format(self.name, food))
def sleep(self, minutes):
print('{}은 {}분 동안 잡니다.'.format(self.name, minutes))
def work(self, minute):
print('{}은 {}분 동안 일해요.'.format(self.name, minute))
class Student(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
super().work(minute)
print('{}은 {}분 동안 공부합니다.'.format(self.name, minute))
class Employee(Person):
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
super().work(minute)
print('{}은 {}분 동안 일해요.'.format(self.name, minute))
lee = Student('이순신', 35)
lee.eat('김밥')
lee.sleep(30)
lee.work(60)
kim = Employee('김상식', 33)
kim.eat('게장')
kim.sleep(387)
kim.work(123123123)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def work(self, minute):
print('{}은 {}분 동안 일해요.'.format(self.name, minute))
class Employee(Person):
def work(self, minute):
super().work(minute) # 부모 클래스의 work() 메서드 호출
print('{}은 {}분 동안 일하는 동안 업무를 처리합니다.'.format(self.name, minute))
kim = Employee('김상식', 33)
kim.work(60)
special method
- __로 시작 __로 끝나는 특수 함수
- 해당 메서드들을 구현하면, 커스텀 객체에 여러가지 파이썬 내장 함수나 연산자를 적용 가능
'''
Point
2차원 좌표평면 각 점 (x, y)
연산 - 두점의 덧셈, 뺄셈 (1, 2) + (3, 4) = (4, 6)
한점과 숫자의 곱셈 (1, 2) *3 = (3, 6)
위 연산이 special method에서 구현이 되어있음.
'''
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return '{}, {}'.format(self.x, self.y)
def __add__(self, pt):
new_x = self.x + pt.x
new_y = self.y + pt.y
return Point(new_x, new_y)
def __sub__(self,pt):
new_x = self.x - pt.x
new_y = self.y - pt.y
return Point(new_x, new_y)
def __mul__(self,pt):
new_x = self.x * pt.x
new_y = self.y * pt.y
return Point(new_x, new_y)
def __len__(self):
return self.x **2 + self.y **2
def __getitem__(self, index):
if index == 0:
return self.x
elif index ==1:
return self.y
else:
return -1
food=[ "자장", "짬뽕", "탕수육, 군만두" ]
x = [1, 2, 3, 4]
p1 = Point(3, 4)
p2 = Point(2, 7)
print([1,2,3,4])
print(p1)
print(p2)
a = p1 + p2
b = p1 - p2
c = p1 * p2
print(a)
print(b)
print(c)
print(len(p1))
print(x[0])
print(x[1])
print(x[3])
반응형
'Python' 카테고리의 다른 글
파이썬 random 서브모듈 함수 (0) | 2023.05.23 |
---|---|
파이썬(python) Numpy와 ndarray? (0) | 2023.05.22 |
python 클래스(class), 생성자, 상속 연습문제② (0) | 2023.05.17 |
python 홀,짝 판별하는 함수 (0) | 2023.05.16 |
파이썬 생성자, 상속 문제 풀기 (0) | 2023.05.16 |