클래스와 생성자
클래스 : 붕어빵 틀
객체 : 붕어빵
객체는 고유의 기능과 성격을 가지고 있고, 서로 다른 객체들에게 영향을 미치지 않음
클래스 선언
class 클래스이름:
클래스내용(코드)
객체 만드는 방법
객체명 = 클래스이름()
인스턴스 : 어떤 클래스의 객체인지 관계에 초점을 맞춘 용어
(객체)는 (클래스)의 인스턴스이다
클래스 내부에 존재하는 함수 : 메소드(Method)
객체 변수에 값을 저장하는 방법 : 생성자 : __init__
객체가 생성될 때 자동으로 호출되는 메소드
class Calculator:
def __init__(self, first, second):
self.first = first
self.second = second
def add(self): # add 메소드
result = self.first + self.second
return result
a = Calculator(6, 3) # 객체 생성시 초깃값 설정
print(a.add())
self 는 호출한 객체를 의미하며, 함수를 불러온 객체에 전달하는 역할을 함
예시에서는 self.first 가 a.first 와 같은 의미이고, self 가 a 에 add 라는 함수를 전달함
self.first = first ▶ a.first = 6
a.first = 6 이 실행되면 a객체에 first 변수가 생성되고 6의 값을 가진다
클래스의 상속
상속 : 다른 클래스의 기능을 물려받는것
부모클래스 : 상속해주는 클래스
자식클래스 : 상속받는 클래스
class 자식클래스(부모클래스) :
자식클래스 내용 ...
부모클래스의 생성자를 끌어다 쓰기 때문에 추가적인 생성자가 필요하지 않은 경우에는 생성자를 적지 않아도 됨
생성자 상속받는 방법
## 자식클래스
def __init__() :
super().__init__()
클래스 내부에서 super() 함수를 통해 부모클래스에 접근 가능
class PerfectCal(Calculator):
def __init__(self, first, second):
super().__init__(first, second)
메소드 오버라이딩
부모 클래스의 메소드를 자식 클래스에서 다시 정의하는것
재정의하고싶은 메소드를 자식 클래스에서 다시 적으면 됨
메소드 추가도 가능
클래스 변수
객체변수는 독립적으로 값을 유지하고 다른 객체에게 영향을 받지 않음
클래스변수는 클래스로 만든 모든 객체에게 값이 공유됨
class dessert :
favorite = '스콘'
a = dessert()
print(a.favorite)
결과값 : 스콘
#값 바꾸기
dessert.favorite = '휘낭시에'
b = dessert()
print(b.favorite)
결과값 : 휘낭시에