스터디/혼자공부하는파이썬
chapter08. 클래스(2)
냠냠쿠
2024. 5. 2. 20:58
728x90
1. 어떤 클래스의 인스턴스인지 확인하기
isinstance(인스턴스, 클래스)
해당 인스턴스가 해당 클래스를 기반으로 만들어졌으면 True 상관없는 인스턴스와 클래스인경우 False 리턴
단순 인스턴스를 확인하는 경우 아래와 같이 사용할 수도 있다.
type(인스턴스) == 클래스
2. 특이한 이름의 함수
이름 | 영어 | 설명 |
eq | equal | 같다 |
ne | not equal | 다르다 |
gt | great than | 크다 |
ge | greather than or equal | 크거나 같다 |
lt | less than | 작다 |
le | less then or equal | 작거나 같다 |
3. 클래스 변수와 메서드
- 클래스 변수 만들기
class 클래스이름:
클래스 변수 = 값
- 클래스 변수에 접근하기
클래스이름.변수이름
- 클래스 함수 만들기
class 클래스이름:
@classmethod #데코레이터
def 클래스 함수(cls, 매개변수):
pass
- 클래스 함수 호출하기
클래스 이름.함수이름(매개변수)
4. 가비지 컬렉터
- 변수에 저장 X
class Test:
def __init__(self, name):
self.name = name
print("{} 생성".format(self.name))
def __del__(self):
print("{}파괴".format(self.name))
Test("A")
Test("B")
Test("C")
- 변수에 저장 O
class Test:
def __init__(self, name):
self.name = name
print("{} 생성".format(self.name))
def __del__(self):
print("{}파괴".format(self.name))
a= Test("A")
b= Test("B")
c= Test("C")
변수에 저장한 경우 가비지 컬렉터가 차후에 사용 될 수 있다고 판단하여 프로그램이 종료되는 순간까지 데이터를 메모리에서 제거하지 않는다.
5. 프라이빗 변수 만들기
__변수이름
6. 게터세터
- 외부에서 직접 프라이빗 변수에 접근 할 수 없기 때문에 간접적으로 접근할 수 있도록 해 줌
#게터 세터 선언
def get_radius(self):
return self.__radius
def set_radius(self, value):
return self.__radius = value
#간접적으로 접근
circle.get_radius()
- 데코레이터를 사용한 게터세터 만들기
import math
class Circle:
...
@property
def radius(self):
return self.radius
@radius.setter
def radisu(self, value):
if value<=0:
raise TypeError("길이는 양의 숫자여야 함")
self.__radius = value
...
7. 상속
- 상속 : 만들어둔 형태에 내가 원하는 것만 추가하거나 교체
- 다중 상속 : 누군가 만들어 놓은 형태를 조립해서 내가 원하는 것을 다시 만드느는 것
class Parent:
def __init__(self):
self.value ="test"
print("parent 클래스의 __init()")
def Child(Parent):
super().__init__()
print("child 클래스의 __init()")
child = Child()
child.test()
print(child.value)
8. 예외클래스 만들기
class CustomException(Exception):
def __init__(self):
super().__init__()
raise CustomException
- 오버라이드하기
class CustomException(Exception):
def __init__(self):
super().__init__()
print("내가 만든 오류")
def __str__(self):
return "오류발생쓰"
raise CustomException
728x90