class ClassName: # 클래스 정의
species = 'human' # 클래스 변수
def __init__(self, name, age): # 생성자
self.name = name # 인스턴스 변수
self.age = age
self.__money = 0 # 비공개 속성
def eat_tteokkuk(self): # 메서드
self.age += 1
instance = ClassName( 'Sunny', 500 ) # 인스턴스 생성
instance.eat_tteokkuk() # 메서드 호출
print( instance.age ) # 어트리뷰트 참조
클래스
클래스는 속성과 메서드들의 묶음이자 인스턴스(개체)의 데이터형이다. 모든 게 객체인 파이썬에서 클래스 정보 역시 클래스라는 클래스의 객체
isinstance( 인스턴스, 클래스 )
- 해당 클래스의 인스턴스인지 검사한다.
True
,False
를 반환
인스턴스(객체) 생성
해당 클래스를 자료형으로 하는 객체를 생성한다.
인스턴스이름 = 클래스이름( 생성자에 넣을 인자 )
어트리뷰트
객체 안에 들은 변수나 메서드
객체.어트리뷰트
로 해당 어트리뷰트를 써먹는다.
클래스 정의
class 클래스이름: 클래스바디
@데코레이터 class 클래스이름 ( 상속인자목록 ) : 바디
변수
클래스 변수
해당 클래스의 모든 인스턴스에서 공유하는 변수 (자바의 static변수 같음)
class 클래스이름: 속성 = 값 …
인스턴스 변수
각 인스턴스마다 따로 가지는 변수
class 클래스이름: … def 메서드(self, …): self.속성 = 값 …
메서드
메서드는 클래스 안에 정의된 함수이다.
class 클래스이름: … def 메서드이름(self, 매개변수 0개이상): 메서드바디 …
매개변수 중에 self
가 있어야 메서드 바디에서 self를 통해 인스턴스 자신이 가리켜진다. 없으면 인스턴스 자신에게 접근이 안 되므로 그 메서드는 곧 정적메서드와 같게 된다. 매개변수 목록 중 self
는 맨 처음 나와야 한다.
생성자
__init__
이라는 이름의 메서드로 생성자를 구현한다. 주로 여기서 인스턴스 변수들을 초기화한다.
이 메서드를 정의하지 않아도 매개변수 없는 기본 생성자가 있다.
비공개 속성
어트리뷰트 이름을 “__”으로 시작한다. 그 어트리뷰트는 안 보이게 된다.
뒤쪽에는 __가 있으면 안 된다. 양쪽 모두 __로 둘러싸인 이름은 파이썬 시스템에서만 쓰기로 되어있기 때문이다.
728x90