1.클래스
- 클래스 class : 객체를 표현하기 위한 문법
- 객체 object : 특정한 개념이나 모양으로 존재하는 것
- 인스턴스 instance : 객체와 같음. 클래스와 연관 지어서 말할 때 지칭
- 속성 attribute : 클래스 내부의 메소드 단계와 동일한 영역에 위치한 변수
- 메소드 method : 클래스 안에 들어있는 함수, 인스턴스를 통해 호출
class 클래스이름: # 클래스 만들기
def 메소드(self): # 메소드 만들기
코드
class Person:
def greeting(self):
print('Hello')
인스턴스 = 클래스() # 인스턴스(객체) 생성
james = Person() # james가 Person의 인스턴스
1-1.메소드 호출하기
인스턴스.메소드() # 인스턴스로 메소드 호출
james.greeting()
1-2.인스턴스와 객체의 차이점?
- 객체 : 객체만 지칭 할 때
- 인스턴스 : 클래스와 연관 지어서 말할 때
a = list(range(10)) # a는 객체, list 클래스의 인스턴스
b = list(range(20)) # b는 객체, list 클래스의 인스턴스
1-3.메소드 안에서 메소드 호출하기
self.메소드() # self 없이 메소드 이름만 사용하면 클래스 바깥족에 있는 함수 호출
1-4.특정 클래스의 인스턴스인지 확인하기
- isinstance() : 특정 클래스의 인스턴스가 맞으면 True
isinstance(인스턴스, 클래스)
2.속성 사용하기
- 속성 만들 때
__init__ 메소드 안에서 self.속성에 값 할당
__init__ 메소드 : 인스턴스를 만들 때 호출되는 특별한 메소드
- 매직메소드 / 스페셜메소드 : 밑줄 두개가 붙은 메소드, 파이썬이 자동으로 호출해주는 메소드
self : 인스턴스 자기 자신
class 클래스이름:
def __init__(self):
self.속성 = 값
2-1.인스턴스를 만들 때 값 받기
__init__ 메소드에서 self 다음에 값을 받을 매개변수 지정
- 매개변수 self.속성에 넣어줌
- 클래스 안에서 속성 접근 : self.속성
- 클래스 바깥에서 속성 접근 : 인스턴스.속성
class 클래스이름:
def __init__(self, 매개변수1, 매개변수2):
self.속성1 = 매개변수1
self.속성2 = 매개변수2
class Person:
def __init__(self, name, age, address):
self.hello = '안녕하세요'
self.name = name
self.age = age
self.address = address
def greeting(self):
print('{0} 저는 {1}입니다.'.format(self.hello, self.name))
maria = Person('마리아', 20, '서울시 서초구 반포동')
maria.greeting() # 안녕하세요 저는 마리아입니다
print('이름: ', maria.name) # 마리아
print('나이: ', maria.age) # 20
print('주소: ', maria.address) # 서울시 서초구 반포동
2-2.클래스의 위치 인수, 키워드 인수
- 클래스로 인스턴스를 만들 때 위치 인수와 키워드 인수 사용 가능
- 위치 인수와 리스트 언패킹을 사용하려면
*args 사용
- 매개변수에서 값을 가져오려면
args[0] 사용
# 위치 인수와 리스트 언패킹
class Person:
def __init__(self, *args)
self.name - args[0]
self.age = args[1]
self.address = args[2]
maria = Person(*['마리아', 20, 서울시 서초구 반포동])
# 키워드 인수와 딕셔너리 언패킹 사용
class Person:
def __init__(self, **kwargs): # 키워드 인수
self.name = kwargs['name']
self.age = kwargs['age']
self.address = kwargs['address']
maria1 = Person(name='마리아' age=20, address='서울시 서초구 반포동')
maria2 = Persoon(**{'name':'마리아', 'age':20, 'address':'서울시 서초구 반포동'})
2-3.인스턴스를 생성한 뒤에 속성 추가하기, 특성 속성만 허용하기
- 클래스의 인스턴스 속성은
__init__ 메소드에 추가한 뒤 사용
- 클래스로 인스턴스를 받은 뒤, 인스턴스.속성 = 값 형식으로 속성 추가 가능
# 인스턴스 속성 추가하기
인스턴스.속성 = 값
class Person:
pass
maria = Person() # 인스턴스 생성
maria.name = '마리아' # 인스턴스를 만든 뒤 속성 추가
maria.name
3.비공개 속성 사용하기 private attribute
- 속성은 메소드에서 self로 접근하거나 인스턴스.속성 형식으로 클래스 밖에서도 접근 가능
- 클래스 바깥에서 접근할 수 없고 클래스 안에서만 사용할 수 있는 속성
#비공개 속성
__속성
#비공개 속성 아님
__속성__
class 클래스이름:
def __init__(self, 매개변수)
self.__속성 = 값