Computer Science/자료구조

[5.10] * class 보충 학습

토마토. 2021. 5. 10. 13:23

41. class 정리 - 클래스 기본적인 사용 - 파이썬 - 기본을 갈고 닦자! (wikidocs.net)

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

생성자와 초기화자

class Flight:
    def __init__(self): #객체에서 사용할 초기값을 초기화한다. 
        print('init')
        super().__init__()
    
    def __new__(cls):
        print('new')
        return super().__new__(cls)

    def number(self):
        #파이썬 메서드의 첫번째 파라미터명은 'self'를 사용함. 
        return 'SN060'

객체를 생성

from class_making import Flight

f = Flight() #constructor 생성자
print(f)

출력

new -> 먼저 new가 클래스를 받아 할당

init -> self를 받아 객체 내부 속성을 초기화

class Flight:
    def __init__(self, number): #객체에서 사용할 초기값을 초기화한다. 
        self._number = number
        #내부적으로 사용되는 변수
    
    '''def __new__(cls):
        print('new')
        return super().__new__(cls)''' # 자동으로 실행됨

    def number(self):
        #파이썬 메서드의 첫번째 파라미터명은 'self'를 사용함. 
        return self._number

생성자

from class_making import Flight

f = Flight(5) #constructor 생성자
print(f.number())

초기화자(__init__)에 객체의 불변성 확립

class Flight:
    def __init__(self, number): #객체에서 사용할 초기값을 초기화한다. 
        if not number[:2].isalpha():
            raise ValueError("첫 두 글자가 알파벳이 아닙니다.")
        if not number[:2].isupper():
            raise ValueError("첫 두 글자가 대문자가 아닙니다.")
        if not number[2:].isdigit():
            raise ValueError("세번째 글자 이상이 양의 숫자가 아닙니다.")
        self._number = number
        #내부적으로 사용되는 변수
    
    '''def __new__(cls):
        print('new')
        return super().__new__(cls)''' # 자동으로 실행됨

    def number(self):
        #파이썬 메서드의 첫번째 파라미터명은 'self'를 사용함. 
        return self._number

repl

from class_making import Flight

f = Flight('abc')

File "c:\Users\82109\Desktop\선형대수학\class_making.py", line 6, in __init__
    raise ValueError("첫 두 글자가 대문자가 아닙니다.")
ValueError: 첫 두 글자가 대문자가 아닙니다.

비공개 속성

__name 더블 언더바 사용

 

'Computer Science > 자료구조' 카테고리의 다른 글

[5.12] 04-2 큐  (0) 2021.05.13
[5.11] 04 스택과 큐  (1) 2021.05.11
[5.8] 03 검색 알고리즘 - 해시법  (0) 2021.05.08
[5.5-6] 03 검색 알고리즘  (0) 2021.05.05
[4.28] 검색 알고리즘  (0) 2021.04.28