728x90
반응형
SMALL
상속(Inheritance)
부모클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성 하는 것
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return "저의 이름은{0} 입니다. 나이는 {1} 입니다.".format(self.name, self.age)
class Korean(Person):
pass
first_korean = Korean("Myeonghak", 28)
print(first_korean.name)
부모 클래스 Person에서는 name과 age가 있음 이를 Korean(Person)으로 상속을 받음
상속받았기 때문에 Person이 가지고 있는 속성을 그대로 사용할 수 있음.
다형성(Polymorphism)
같은 이름 메소드의 내부 로직을 다르게 작성
Dynamic Typing 특성으로 인해 파이썬에서는 같은 부모클래스의 상속에서 주로 발생함
중요한 OOP의 개념이나 너무 깊이 알 필요 X
class Animal:
def __init__(self, name):
self.name = name
def talk(self):
raise NotImplementedError("Subclass must implement abstract method")
class Cat(Animal):
def talk(self):
return "Meow!"
class Dog(Animal):
def talk(self):
return "Woof! Woof!"
animals = [Cat("Missy"), Cat("Mr.Mistoffelees"), Dog("Lassie")]
for animal in animals:
print(animal.name + ": " + annimal.talk())
각각의 클래스에 속해있는 talk를 선언해주면 출력되는 결과 값이 다름
가시성(Visibility)
객체의 정보를 볼 수 있는 레벨을 조절하는 것
누구나 객체 안에 모든 변수를 볼 필요가 없음
- 객체를 사용하는 사용자가 임의로 정보 수정
- 필요 없는 정보에는 접근 할 필요가 없음
- 만약 제품으로 판매한다면? 소스의 보호
class Product(object):
pass
class Inventory(object):
def __init__(self):
self.__items = []
def add_new_item(self, product):
if type(product) == Product:
self.__items.append(product)
print("new item added")
else:
raise ValueError("Invalid Item")
def get_number_of_items(self):
return len(self.__items)
Product 객체를 Inventory 객체에 추가
Inventory에는 오직 Product 객체만 들어감
Inventory에 Product가 몇 개인지 확인이 필요
Inventory에 Product Items는 직접 접근이 불가
Private 변수로 선언해서 타객체가 items에 접근 못함
decorate
Class Student:
def __init__(self, name, marks):
self.name = name
self.marks = marks
@property
def gotmarks(self):
return self.name + 'obtained' + self.marks + 'marks'
여기에 @property가 바로 decorate.
내부에 있는 객체를 접근할 수 있게 해주는 기능
728x90
반응형
'프로그래밍 > HTML' 카테고리의 다른 글
HTML 문법을 활용한 마라톤 제출 양식 코드리뷰 (0) | 2022.05.23 |
---|---|
WEB1 - HTML 간단 문법 정리 (2) | 2022.05.18 |