본문으로 바로가기

클래스

category Python/python 2020. 10. 19. 18:21

클래스(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