[python] 클래스 사용하기

anjiyoo·2024년 3월 6일

Python

목록 보기
33/41
post-thumbnail

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.__속성 = 값
profile
기록으로 흔적을 남기는 것을 좋아합니다

0개의 댓글