파이썬 클래스 기초 정리

짱J·2022년 10월 26일
0

Python

목록 보기
1/1
post-thumbnail

서론

Linear Block code를 구현하는 이동통신 과제를 하면서 파이썬으로 구현하는 것을 택했다.
과제 구현에 앞서, 파이썬 클래스 개념은 눈치껏 알기만 하고 제대로 알지 못해 이번 기회에 정리해보려고 한다.

클래스 정의

  • class 키워드 사용
  • 클래스의 네이밍 컨벤션은 CamelCase를 사용
class CustomerClass:
	def __init__(self, param):
    	# write code

클래스 생성

  • from ~ import ~ 로 import 가능
  • 클래스 객체 생성 및 변수에 할당
    • java나 C# 등과 달리 new 키워드가 없음
f = Flight()
  • 클래스 메서드 작성
class Flight:
	def number(self):
    	return 'SN060'
  • 인스턴스 메소드의 접근
    • 인스턴스 메소드 - 객체에서 호출되어질 수 있는 함수
from airtravel import Flight
f = Flight()
f.number()
  • 파이썬 메서드의 첫 번째 파라미터 명은 관례적으로 self라는 이름을 사용
    • 호출 시 호출한 객체 자신이 전달되기 때문

생성자와 초기화자

생성자로 객체 생성을 호출받으면
1) __new__를 호출하여 객체를 생성할당
2) __init__ 메소드를 호출하여 객체에서 사용할 초기값들을 초기화

  • 일반적으로 파이썬에서 클래스를 만들 때는 __init__ 메소드만 오버라이딩하여 객체 초기화에만 이용
class Flight:
	def __init__(self):
    	print('init')
        super().__init__()
        
    def __new__(cls):
    	print('new')
        return super().__new__(cls)
        
    def number(self):
    	return 'SN060'

< 출력 결과>
new
init


이번에는 객체의 속성을 초기화해보자.

class Flight:
	def __init__(self, number):
    	self._number = number
        
    def number(self):
    	return self._number
  • _는 내부적으로 사용되는 변수, 파이썬 기본 키워드와 충돌을 피하기 위한 변수이다.
from airtravel import Flight
f = Flight(5)
f.number()
f._number

위에 두 코드는 동일한 결과를 출력한다.


주의하자

  • 파이썬은 기본적으로 접근제어자가 없으며, 기본적으로 모두 Public이다.

  • 초기화자에 객체의 불변성을 확립하자 (유효성 검증을 수행)

    • 객체 생성 시 들어올 값에 대해서 __init__에서 validation을 수행
    • 규칙에 맞지 않는 값이 들어오면 ValueError를 발생시키자
      raise ValueError("왜 에러가 발생했는지 적어주세요.")

  • 클래스 외부에서 변수에 접근하는 것을 막기 위해 __(더블 언더바)를 사용하자.

  • 파이썬은 메소드 오버로딩이 없다.

    • 메소드 오버로딩 - 하나의 클래스 내부에서 메소드 명칭은 똑같고, 인자를 다르게 하는 형태를 허용
profile
[~2023.04] 블로그 이전했습니다 ㅎㅎ https://leeeeeyeon-dev.tistory.com/

0개의 댓글