클래스(Class)
: 객체를 표현하기 위한 문법
: 클래스의 이름은 대문자로 시작함
: 메서드의 첫 매개변수는 반드시 self를 지정해야함
: 프로그래밍으로 객체를 만들 때 사용하는 것
class 클래스이름:
def 메서드(self):
코드
SyntaxError : invalid syntax
- 클래스와 메서드의 형식이 맞지 않아서 발생하는 구문 에러
- 메서드에서 (괄호)의 짝이 맞는지, :(콜론)을 빠트리지 않았는지 확인
TypeError: ... takes 0 positional arguments but 1 was given
- 메서드의 첫 번째 매개변수를 self로 지정하지 않아서 발생하는 에러
- 메서드의 첫 번째 매개변수가 self인지 확인
클래스 사용
인스턴스 = 클래스()
메서드 호출
인스턴스.메서드()
파이썬에서 흔히 볼 수 있는 클래스
: int, list, dict 등도 사실 클래스 입니다.
type(객체)
인스턴스와 객체의 차이점
: 인스턴스와 객체는 같은 것을 뜻함
: 보통 객체만 지칭할 때는 그냥 객체라고 부름
: 하지만 클래스와 연관 지어서 말할 때는 인스턴스라고 부름
빈 클래스 만들기
: 코드 부분에 pass를 넣어줌
메서드 안에서 메서드 호출하기
self.메서드()
특정 클래스의 인스턴스인지 확인하기
isinstance(인스턴스, 클래스)
: 특정 클래스의 인스턴스가 맞으면 True, 아니면 False를 반환
: 주로 객체의 자료형을 판단할 때 사용함
속성사용하기
class 클래스이름:
def __init__(self): # Java에서의 생성자
self.속성 = 값 # Java에서의 Field 생성
: __init__ 메서드는 클래스에 ( )를 붙여서 인스턴스를 만들 때 호출되는 특별한 메서드
: 즉, __init__(initialize)라는 이름 그대로 인스턴스(객체)를 초기화 함
: 앞뒤로 __(밑줄 2개)가 붙은 메서드는 파이썬이 자동으로 호출해주는 메서드,
스페셜 메서드(special method) 또는 매직 메서드(magic method)라고 부름
self
: 인스턴스 자기 자신을 의미
인스턴스를 만들 때 값 받기
: __init__메서드에서 self 다음에 값을 받을 매개변수를 지정
: 매개변수를 self.속성에 넣어줌
class 클래스이름:
def __init__(self, 매개변수):
self.속성 = 매개변수
클래스의 위치 인수, 키워드 인수
: 규칙은 함수와 같음
: 위치 인수와 리스트 언패킹을 사용하려면 *args를 사용
: 매개변수에서 값을 가져오려면 args[0] 처럼 사용
: 키워드 인수와 딕셔너리 언패킹을 사용하려면 **kwargs를 사용
: 매개변수에서 값을 가져오려면 kwargs['name']처럼 사용
인스턴스를 생성한 뒤에 속성 추가하기, 특정 속성만 허용하기
: 클래스로 인스턴스를 만든 뒤 인스턴스.속성 = 값 형식으로 속성을 계속 추가 할 수 있음
: 이렇게 추가한 속성은 해당 인스턴스에만 생성됨
: 따라서 클래스로 다른 인스턴스를 만들었을 때는 추가한 속성이 생성되지 않음
: __init__ 메서드가 아닌 다른 메서드에서도속성을 추가 할 수 있음
: 단, 이때는 메서드를 호출해야 속성이 생성됨
: 특정 속성만 허용하고 다른 속성은 제한하고 싶을 때는
클래스에서 __slots__에 허용할 속성 이름을 리스트로 넣어주면 됨
: 속성 이름은 반드시 문자열로 지정
__slots__ = ['속성이름1', '속성이름2']
비공개 속성(private attribute) 사용하기
: 메서드에서 self로 접근할 수 있고, 인스턴스.속성 형식으로 클래스 바깥에서도 접근 가능
: 클래스 바깥에서는 접근할 수 없고, 클래스 안에서만 사용할 수 있는 비공개 속성
- 클래스 안의 메서드에서만 접근할 수 있음
class 클래스이름:
def __init__(self, 매개변수):
self.__속성 = 값
: 비공개 속성을 접근하는 메서드 생성
공개 속성(Public Attribute)
- 클래스 바깥에서 접근할 수 있는 속성
비공개 속성(Private Attribute)
- 클래스 안에서만 접근할 수 있는 속성
'Python > python' 카테고리의 다른 글
클래스 상속 사용하기 (0) | 2020.10.19 |
---|---|
클래스 속성과 정적, 클래스 메서드 사용하기 (0) | 2020.10.19 |
클로저 사용하기 (0) | 2020.10.19 |
람다 표현식 사용하기 (0) | 2020.10.19 |
함수에서 재귀호출 사용하기 (0) | 2020.10.19 |