<NAVER boostcourse>
에서 수강한 강의를 바탕으로 정리한 내용입니다.: Object-Oriented Programming
1. Inheritance : 상속
2. Polymorphism : 다형성
3. Visibility : 가시성
class Person(object):
def __init__(self, name, age, gender):
self.name = name
self.age =age
self.gender = gender
def about_me(self):
print(f"my name is {self.name} and my age is {self.age}. ")
class Employee(Person): # Person class 상속
def __init__(self., age, name, gender, salary, hire_date):
super().__init__(name, age, gender) # 부모 객체를 사용한다.
self.salary = salary
self.hire_date = hire_date
def do_work(self):
print("work hard")
def about_me(self): # Person class 함수 재정의
super().about_me()
print(f"my salary is {self.salary} and my hire date is {self.hire_date}.")
NotImplementedError
를 발생시킴으로써 자식 클래스에서 내부 로직을 다르게 작성하도록 한다.__
를 추가하여 선언함_클래스명__속성명
과 같이 변경된 이름으로 호출해함Class Product():
pass
Class Inventory():
def __init__(self):
self.__items = [] # 클래스 외부에서 접근 불가
def add_item(self, product):
if type(product) == Product
self.__items.append(product)
else:
raise ValueError('product is not Produt object')
inventory1 = Inventory()
p1 = Product()
p2 = Product()
inventory.add_item(p1)
inventory.add_item(p2)
print(inventory.__items) # AttributeError
@property
데코레이터를 사용해서 외부로부터 숨겨진 변수에 접근이 가능하도록 할 수 있다.Class Product():
pass
Class Inventory():
def __init__(self):
self.__items = [] # 클래스 외부에서 접근 불가
def add_item(self, product):
if type(product) == Product
self.__items.append(product)
else:
raise ValueError('product is not Produt object')
@property
def show_item(self, index):
return self.__items[index]
inventory1 = Inventory()
p1 = Product()
p2 = Product()
inventory.add_item(p1)
inventory.add_item(p2)
inventory.show_item(1)
> p2