클래스 선언하기
'class' 는 클래스를 만들때 쓰이는 예약어 입니다.
그 뒤에 괄호에는 상속 클래스 등을 써주면 됩니다.
class 클래스명(상속 클래스명):
속성1
속성2
...
def 메소드1(self, 인자1, 인자2,...):
<수행할 문장 1>
<수행할 문장 2>
...
def 메소드2(self, 인자1, 인자2,...):
<수행할 문장1>
<수행할 문장2>
...
...
함수의 인자로는 항상 첫번째로 self를 받는데, 인스턴스화 될 때 각 인스터와 자신을 구분하기 위한 디폴트 인자입니다.
그러므로 명시적으로 호출하지 않고, class 내부에 함수를 만들때 꼭 첫번째 인자로 넣어줘야합니다.
대표적인 클래스 연산자 메소드(오버라이딩)
자바를 배운사람이라면 오버라이딩이라고 생각하시면 됩니다.
- __init__ : 생성자(constructor)입니다. 인스턴스가 만들어질때 호출합니다.
- __del__ : (소멸자) 인스턴스가 사라질때 호출됩니다.
- __add__ : 연산자 '+' 가 이용됐을때 호출합니다 ex) x + y
- __or__ : 연산자 '|' ex) x | y
- __repr__ : print
- __cmp__ : 비교 ex) x > y
생성자 (__init__) 예시
파이썬에서는 클래스의 변수들을 미리 선언하지 않고 아래처럼 표현할 수 있습니다.
자바에서 this 대신에 self를 씁니다.
class Point:
x=0
y=0
def __init__(self , x=0, y=0):
self.x = x
self.y = y
#####################################
class Point:
def __init__(self , x=0, y=0):
self.x = x
self.y = y
인자에 x=0 , y=0 은 인자 값을 안받았을때 기본 값입니다.
소멸자 (__del__) 예시
소멸자는 인스턴스가 소멸될때 자동 수행되는 메소드
주로 메모리에서 제거할 것이 있을때 재정의 합니다.
#point 객체
class Point:
def __del__(self):
self.x=0
self.y=0
연산자 오버라이딩 예시
- __add__(self , other)
- __sub__(self , other)
- __mul__(self , other)
class Point:
def __add__(self , other):
self.x += other.x
self.y += other.y
point3 = point1 + point2
할때 바로 쓰입니다.
접근권한
- Public(디폴트) : 모든 경우에서 접근가능됩니다.
- Protected : 자식에게만 상속됩니다
- 속성 또는 메소드 앞에 '_'를 붙입니다.
- Private : 자식에게도 상속되지않고 인스턴지 본인만 접근가능
- 속성 또는 메소드 앞에 '__' 붙입니다.
예외처리
자바에서는 try-catch 이지만 파이썬은 try-except입니다.
try 구문에서 코드를 실행시키고 , except에서는 지정한 예외가 일어날때 처리할 구문이고, finally에선 예외와 관계없이 실행됩니다.
1. 0으로 나눌때 생기는 ZeroDivisionError
try:
num3 = num1 / num2
except ZeroDivisionError as e:
print(e)
finally:
print("이 문장은 무조건 출력됩니다.")
2. 존재하지 않는 파일을 열때 생기는 IOError
f = open("nonexistFile.txt" , 'r')
try:
data = f.read() #없는 파일이므로 여기서 오류 생김
except IOError as e:
print(e)
finally:
f.close() #파일은 어떤 경우에도 닫아야됨
반응형
'알고리즘 PS (백준) > 🐍 Python (파이썬)' 카테고리의 다른 글
[파이썬 python] Matplot 설치 및 활용 (데이터 시각화 , 그래프) (2) | 2022.06.19 |
---|---|
[파이썬 python] Pandas 설치 및 활용 (데이터 프레임) (0) | 2022.06.07 |
[파이썬 python] : numpy 설치 및 활용 (배열 , 수학/행렬연산 , 코싸인 유사도) (0) | 2022.06.02 |
[파이썬 python] 파일 입출력 , csv 파일 읽기 + (기상,지하철 데이터 분석) (0) | 2022.06.01 |
[파이썬 python] 리스트(list) , 튜플 , 딕셔너리 (dict) , 문자열 관련 함수 (0) | 2022.05.12 |
댓글