클래스는 객체를 생성하기위한 청사진이다!
객체를 정의하고 속성, 동작을 정의함
클래스를 메모리에 담으면 인스턴스
객체는 클래스의 인스턴스
클래스 = 붕어빵틀
인스턴스 = 붕어빵
클래스 안에 속성(어트리뷰트, 트러퍼티)과 메서드(클래스 안에서 만드는 함수)가 있다
class Car():
def __init__(self, model, color, speed, ...):
...
예를들어 class Car()가 있을 때,
Car = 속성을 보겠다! (model, color같은 내용들)
Car() = 괄호를 넣으면 함수를 실행하겠다 (Car의 __init__ 함수 실행)
- 캡슐화!
getter 와 setter,
코드 형태를 보존하기위해! 사용할 부분을 지정해줌
아래에서는 init 에 들어있는 것이 캡슐화된 부분!
accel과 brk 조절하여 사용할 수 있도록 하였고, 직접 init을 건드리지 않도록 함
class Car():
def __init__(self, model, color, speed=0):
self.model = model
self.color = color
self.speed = 0
def accelerate(self):
accel = 20
self.speed += accel
print(f"{self.model} accelerate!")
def brake(self):
brk = 10
self.speed -= brk
print(f"{self.model} brake!")
def get_speed(self):
print(f"{self.model}의 현재 속도는 {self.speed}km/h입니다.")
car = Car("소나타", "자주색",0)
car.accelerate()
car.brake()
car.brake()
car.get_speed()
- 다형성
같은 이름의 메서드를 다른 클래스에서 다르게 구현하는 것
상속받은 클래스를 오버라이딩하여 각 클래스에서 메서드가 다르게 구현되는것 = 다형성!
코드의 가독성과 유지보수성을 높여준다
class Animal():
def __init__(self, name, speak):
self.name = name
self.speak = speak
print(f"동물 {name}은 {speak}!")
class Dog(Animal):
def __init__(self, name, speak):
super().__init__(name, speak)
class Cat(Animal):
def __init__(self, name, speak):
super().__init__(name, speak)
dog = Dog("비숑", "멍멍")
cat = Cat("코숏", "야옹")
dog
cat
- 추상 클래스
Abstract class
붕어빵 틀을 만들어주는 붕어빵틀의 틀
관계성을 만들어줄 수 있고, 사용하는 방법이 명시되어있는 클래스를 만들어준다.
class Shape():
def get_area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def get_area(self):
return (self.radius ** 2) * 3.14
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def get_area(self):
return self.width * self.length
circle = Circle(5)
rectangle = Rectangle(5, 10)
print(circle.get_area())
print(rectangle.get_area())
'AI 웹개발반' 카테고리의 다른 글
[TIL] 장고 permission (0) | 2023.05.04 |
---|---|
[TIL] itertools. permutations, combinations 순열과 조합 (0) | 2023.05.03 |
[TIL] 장고 Serializer 활용 + 개인과제 해설 (2) | 2023.05.01 |
[WIL]:07 장고 심화 주간 2 (0) | 2023.04.29 |
[TIL] 개인과제 중 마주친 크고 작은 오류들 기록. (0) | 2023.04.28 |