내일배움단 11일메이킹챌린지 4일차
파이썬 객체지향, class
class를 정의하는 문법에 대해 오늘 배웠다.
출처 - 유튜브 동빈나님 강의 : https://www.youtube.com/watch?v=YQhJsWj6ydU&list=PLRx0vPvlEmdD8u2rzxmQ-L97jHTHiiDdy&index=35
객체지향형 프로그래밍에서 객체의 설계도가 되는 것이 클래스class.
class(에 정의된 내용)를 통해 만든 특정 객체를 인스턴스라고 부른다.
클래스는 크게 두가지로 이루어져있다.
클래스 멤버 : 클래스 내부에 포함된 변수
클래스 메소드 : 클래수 내부에 포함된 함수
파이썬 클래스를 정의할 때는 생성자가 반드시 필요하고, 소멸자는 권장된다.
소멸자가 없으면 클래스로 인스턴스가 생성될 때 거기에 할당된 메모리가 계속 할당된 채로 남아있기 때문에,
쓸모를 다 했을 때 소멸(메모리 공간을 다시 쓸 수 있게 반환)될 수 있도록 클래스 내에 정의해주는 것이 소멸자.
클래스 내에서 자기 자신을 표현하기 위해 self 를 사용한다.
생성자: 클래스에 반드시 정의되어있어야 하고, 함수 형태로 정의. 이름은 __init__
이어야하고 self라는 매개변수를 가져야한다. 아래 예시처럼.
class Classname:
# 클래스의 생성자
def __init__(self, name, color):
self.name = name # 클래스의 멤버
self.color = color # 클래스의 멤버
# 클래스의 메소드
def show_info(self):
print("이름:", self.name, "/ 색상:", self.color)
## 일반적으로 Setter 메소드, Setter함수라고 불리는 것이 클래스 내에 많이 작성됨
## 인스턴스 내의 멤버(변수)의 값을 바꿀 수 있게 해주는 메소드
def set_name(self, name):
self.name = name
# 소멸자
def __del__(self):
print("인스턴스를 소멸시킨다")
car1 = Classname("소나타", "빨간색")
car1.show_info() # 결과 -> 이름: 소나타 / 색상 : 빨간색
print(car1.name, " 사고 싶다!") # 결과 -> 소나타 사고 싶다!
## "." 을 이용하여 인스턴스 내의 멤버(클래스 안에 정의했던 변수)를 불러올 수 있다.
car2 = Classname("아반떼", "검은색")
car2.show_info() # 결과 -> 이름: 아반떼 / 색상: 검은색
car2.set_name("소나타")
print(car2.name) # 결과 -> 소나타
del car1 # 결과 -> 메모리상에서 할당 해제 되고, 우리는 print문을 넣어두었으므로 해당 내용 출력.
파이썬 class 상속
상속: 다른 클래스의 멤버 변수와 메소드를 물려받아 사용하는 기법
부모와 자식 관계가 존재
자식 클래스: 부모 클래스를 상속 받은 클래스
class Unit:
def __init__(self, name, power):
self.name = name
self.power = power
def attack(self):
print(self.name, "이(가) 공격을 수행합니다. [전투력:", self.power, "]")
unit = Unit("홍길동," 375)
unit.attack() # 결과 -> 홍길동 이(가) 공격을 수행합니다. [전투력: 375 ]
#Unit 클래스를 상속받은 Monster클래스
class Monster(Unit):
def __init__(self, name, power, type):
self.name = name
self.power = power
self.type = type
def show_info(self):
print("몬스터 이름:", self.name. "/ 몬스터 종류:", self.type)
monster = Monster("슬라임", 10, "초급")
monster.attack() #결과 -> 슬라임 이(가) 공격을 수행합니다. [전투력: 10 ]
monster.show_info #결과 -> 몬스터 이름: 슬라임 / 몬스터 종류: 초급
#자식 클래스에서는 부모 클래스의 메소드를 이용할 수 있지만, 부모 클래스는 자식 클래스에서 정의된 메소드 이용 불가
#자식 클래스에서 부모 클래스에 있는 것과 동일한 이름의 메소드나 멤버(변수)를 가진다면 자식클래스의 것을 먼저(우선) 처리(적용)
아무래도
우리 조의 프로젝트가 너무 거대한 것 같다. ㅋㅋ
결제모듈은 넣을 계획이 없지만 그 외엔 거의 본격적인 쇼핑몰 구현에 가까운 프로젝트가 되어서.
이미 강의의 내용은 벗어났고,
앞으로도 필요할 파이썬의 문법을 좀 더 공부했다.
특히 내가 약한 부분인 객체지향형 프로그래밍. OOP.
팀원 중 한분이 관리자페이지 기능 구현을 맡아서 구현하는 중에
flask-admin 모듈(패키지)를 import 했는데,
사실 이용법만 알고 써도 상관은 없지만, 코드가 이해가 안됐다.
일단 파이썬의 class 문법을 몰랐고,
파이썬뿐만 아니라 다른 언어에서도 객체지향형 코드에 대해 어렴풋하게만 이해하고 써온 게 가장 큰 문제.
Author And Source
이 문제에 관하여(내일배움단 11일메이킹챌린지 4일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@danceintherain/내일배움단-11일메이킹챌린지-4일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)