- TIL 목차
- class 와 객체, 인스턴스에 대한 설명
- class 내에서 __init__(self) 함수에 대한 설명
- 클래스 상속에 대한 설명
1. class, object, instance란?
Class란 비슷한 속성을 가진 객체들을 찍어내는 틀이라고 생각하면 된다.
예를 들면, 몬스터, 플레이어들은 이름, 체력, 마나, 공격이라는 걸 공통적으로 한다.
모든 플레이어와, 모든 몬스터들의 정보들을 하나하나 입력한다면
엄청난 양의 데이터가 생길 것인데
students = {}
name, age, gender, level, grades = "name", "age", "gender", "level", "grades"
john, jane = "john", "jane"
math = "math"
students[john] = {}
students[john][age] = 12
students[john][gender] = "male"
students[john][level] = 6
students[john][grades] = {math:3.3}
클래스라는 "틀"을 사용하면
class Student(object):
def __init__(self, name, age, gender, level, grades=None):
self.name = name
self.age = age
self.gender = gender
self.level = level
self.grades = grades or {}
def setGrade(self, course, grade):
self.grades[course] = grade
def getGrade(self, course):
return self.grades[course]
def getGPA(self):
return sum(self.grades.values())/len(self.grades)
john = Student("John", 12, "male", 6, {"math":3.3})
jane = Student("Jane", 12, "female", 6, {"math":3.5})
존과 제인 뿐만아니라 많은 학생들의 정보들을 쉽게 만들어 낼 수 있다.
여기서 클래스를 사용해서 만든 오브젝트(Object)를 인스턴스(instance)라고 부른다.
모든 오브젝트를 우리 말로 객체라고 부르지만
여기서 인스턴스는 클래스를 사용해서 만든 변수로, 지향하고자 하는 바가 다르다.
이것을
턴제 게임 만들기를 개인 과제 받았다.
자세한 내용은 아래에 있는 링크에 담았다.
https://ksw4060.tistory.com/37
2. class 내에서 init 함수란?
유닉스 기반 컴퓨터 운영 체제에서 init은 컴퓨터 시스템의 부팅 과정 중 최초의 프로세스이다.
Init은 시스템이 종료될 때까지 계속 실행하는 데몬 프로세스이다.
다른 모든 프로세스의 직간접 부모 프로세스이며 자동으로 고아 프로세스들을 입양한다.
Init은 하드 코딩된 파일 이름을 이용하여 커널에 의해 시작된다.
커널이 이를 시작할 수 없으면 커널 패닉이 발생한다.
Init은 일반적으로 프로세스 식별자 1로 할당된다.
쉽게 말하면, 부모 클래스에서 무조건 적으로 입력값을 받아오는 기본 속성들이다.
이 값들은 부모클래스로부터 상속받는 모든 클래스에게 적용되는 속성함수이고
내가 풀었던 턴제 게임에서는
플레이어와 몬스터 두개의 클래스 모두 name, hp, power를 공통적으로 받고
상태를 표시하는 함수 status 및 일반 공격함수 또한
두 클래스 모두 공통적으로 가지고 있는 속성이다.
그렇기 때문에 부모 클래스의 init 함수에 변수값으로, 속성값으로 저장되어 있다.
https://ko.wikipedia.org/wiki/Init
3. 클래스 상속이란
일단 객체 지향 프로그래밍에 대한 지식이 먼저인 것 같다.
https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D
위에서 init 함수를 설명 할 때 말했듯이,
플레이어, 몬스터 뿐만아니라 공통적인 속성값을 받아와야 하는 여러 클래스들에 대해서
하나하나 일일이 속성값을 저장할 필요가 없이
부모 클래스라는 큰 틀로 기본 속성값들을 저장하게 해주는 고마운 툴이다
'부트캠프TIL, WIL > AI웹개발(스파르타코딩클럽)' 카테고리의 다른 글
[AI웹개발][20일차TIL] VS code에서 Django사용법, 쿼리란?, ORM이란? 장고에서 웹의 동작 순서 이해하기, Web Framework란? (0) | 2023.04.05 |
---|---|
[AI 웹개발TIL][19일차 TIL]VS code에서 입력되지 않는 오류 해결 (4) | 2023.04.04 |
[AI 웹개발TIL][13일차 TIL] 턴제 게임 만들기 (개인과제) (0) | 2023.04.03 |
[AI 웹개발TIL]18일차 TIL (2) | 2023.04.02 |
[AI 웹개발TIL]17일차 TIL (0) | 2023.04.02 |