사람은 우매한 존재입니다 .
얼마나 멍청하냐면, 1학년때 배우고, 2학년때 배우고, 심지어 3학년때는 코딩존 조교를 하며 가르치던 파이썬 기초 문법을 그새 까먹었다.
특히 Class는 평소 잘 쓰지않는 문법이었어서, 더 모르겠더라
객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 데이터와 해당 데이터를 다루는 메서드를 함께 묶어놓은 틀(template)이다.
클래스 내부에 정의된 변수
클래스 내부에 정의된 함수
클래스로부터 실제로 만들어진 실체

출처 | https://thingsdaq.org/2022/02/23/classes-vs-functions-in-python/
가장 기본적인 구조는 아래와 같다
class Student:
# 1. 클래스 속성
dream = '취업'
# 2. 생성자 (-> 인스턴스 속성)
def __init__(self, name, phone):
self.name = name
self.phone = phone
# __init__() == 클래스명() 호출했을 때 호출되면서 인스턴스를 생성하는 메서드
# 3. 메서드
# 메서드는 반드시 self (객체의 주소값)을 첫 번째 파라미터로 받음
def study(self):
print('공부하자!')
# 인스턴스 생성
student_1 = Student('산별', '010-1234-5678')
위 코드를 실행하면,
Student라는 class 틀이 적용되고,
student_1 이라는 객체를 생성하여 적용한것이다.
class 내에 있는함수는 student_1에서도 적용이 가능하다.
다만 출력을 할때 헷갈리지않게 주의해야한다.
print(student_1) # 인스턴스를 대입한 변수 출력 => 주소값
print(student_1.dream) # 인스턴스를 대입한 변수의 속성명/함수 호출
print(student_1.name) # '산별'
student_1.study() # 공부하자!
내가 가장 헷갈렸던 부분이다.
student_2 = Student('철수', '010-5678-1234')
# 여기서 student_2를 만들 때 __init__이 자동으로 실행됨
한 클래스가 다른 클래스의 기능(속성/메서드)을 그대로 물려받아 사용할 수 있다.
즉, 기존 클래스를 확장해서 새로운 클래스를 만드는 것이다.
class Animal:
def speak(self):
print('동물이 소리를 낸다')
class Dog(Animal): # Animal을 상속받은 Dog 클래스
def bark(self):
print('멍멍!')
dog = Dog()
dog.speak() # 동물이 소리를 낸다 (부모 클래스 메서드 사용 가능)
dog.bark() # 멍멍!
상속은 부모클래스(기존)의 기능(속성,메서드)을 그대로 물려받아서 자식클래(새로운 클래스)에 쓸 수 있게 해주는 기능이라면,
오버라이딩은 부모 클래스의 메서드 중 자식 클래스에서 다르게 동작학 ㅔ해준다.
즉, 부모 클래서의 메서드와 '이름이 똑같은' 메서드를 자식 클래스에서 다시 정의하면된다.
class Animal:
def sound(self):
print("동물이 소리를 낸다")
class Dog(Animal):
def sound(self): # 부모랑 똑같은 이름의 메서드! (오버라이딩)
print("멍멍!")
class Cat(Animal):
def sound(self): # 이것도 오버라이딩
print("야옹!")
dog = Dog()
cat = Cat()
dog.sound() # 멍멍!
cat.sound() # 야옹!
클래스 안에 있는 변수(속성)나 함수(메서드)를 외부에서 막고 싶을 때 이름 앞에 밑줄 두 개를 붙임.
class Person:
def __init__(self, name):
self.__name = name # private 속성
def get_name(self):
return self.__name
p = Person('산별')
# print(p.__name) # 에러! (직접 접근 불가)
print(p.get_name()) # '산별' (getter 메서드로 접근)
사실 class고 뭐고 그냥 매일 술이나 푸데푸데 마시면서 살고싶습니다.
사실 그렇게 살고있음

다들 알콜길을 걸어라