- Class란 무엇인가?
- Class의 구조 - 속성, 메소드
- Class와 Instance의 차이점
- self란?
- Class의 특징 - 상속(Inheritance)
- Class의 def __init__(self)
method
기본 개념
클래스(Class)
- 객체를 만들어내는 틀, 설계도
속성 + 메소드
로 구성 (속성+메소드를 클래스 멤버(class member)라고도 부름)
- 속성 : 클래스에 포함되는 변수
- 메소드 : 클래스에 포함되는 함수. 메소드의 첫 번째 매개변수는 항상
self
- 클래스명은 항상 대문자로 시작
객체(Object)
- 구현할 대상
- 클래스에 선언된 형태로 생성된 실체
- 모든 인스턴스를 대표하는 포괄적인 의미
인스턴스(Instance)
- 설계도를 바탕으로 구현된 구체적인 실체
- 객체가 실체화된 모습이 인스턴스 = 클래스로 생성된 객체(인스턴스가 객체에 포함됨)
- 인스턴스는 메모리에 할당되어 실제 사용됨
- 생성 :
인스턴스명 = 클래스명()
객체와 인스턴스
- 인스턴스와 객체는 같다고 볼 수도 있음. 보통 객체만 지칭할 때는 그냥
객체(Object)
라고 부르고, 클래스로 만들어진 객체를 부를 때는 인스턴스(instance)
트럭은 인스턴스다
라는 말 보다는 트럭은 객체다
라는 표현이 어울림
하지만 트럭은 자동차의 객체다
라는 말보다는 트럭은 자동차의 인스턴스다
라는 표현이 어울림
self
- 클래스 내의 self란 클래스의
인스턴스
다
- 객체 자기 자신을 참조하는 매개변수
class Person:
def sayHello(self):
print("Hello")
minho = Person()
# minho라는 변수에 Person()이라는 클래스를 담았음
# minho가 Person의 인스턴스
minho.sayHello()
# 출력 : Hello
인스턴스 속성
__init__
: 클래스에 속성을 만들 때는 이 메소드 안에서 self.속성
에 값 할당
__메소드__
이런 메소드를 스페셜메소드(special method)라고 부름
__init__
메소드에서 self 다음에 받을 매개 변수를 지정하고 self.속성
으로 할당해주기
- 클래스 안에서 바로 할당하는 속성은 인스턴스 속성이 아니라 클래스
class 클래스이름:
def __init__(self, 매개변수1, 매개변수2):
self.속성1 = 매개변수1
self.속성2 = 매개변수2
class Person:
def __init__(self, name, age, email):
self.hello = '안녕하세요!' # 여기서 self는 생성되는 인스턴스 자신이 되는 것
self.name = name # 🔴
self.age = age
self.email = email
def sayHello(self):
print(f'{self.hello} 저는 {self.name}입니다.')
minho = Person("김민호", 30, "aaa@gmail.com")
minho.sayHello()
print(minho.name) # 🔴 이 문장은 결국 __init__ 에서 인자로 받은 name이 되는 것
print(minho.age)
print(minho.email)
# 안녕하세요! 저는 김민호입니다.
# 김민호
# 30
# aaa@gmail.com
상속(Inheritance)
- 물려받은 변수나 속성은 유지하고 다른 기능을 추가할 때 사용하는 기능
기반클래스(base class)
: 기능을 물려주는 클래스 = 부모클래스
, 슈퍼클래스
파생클래스(derived class)
: 상속을 받아 새롭게 만드는 클래스 = 자식클래스
, 서브클래스
- 생성 :
class 파생클래스이름(기반클래스이름)
참조
https://dojang.io/mod/page/view.php?id=2373
def __init__(self)
- 초기화 메소드, 생성자 메소드
- 별도로 호출하지 않아도 Class의 Instance가 생성되는 순간 자동으로 실행
- 이 메소드의 인자로 받은 값으로 변수의 값 초기화시켜줌