class에 정의될 수 있는 메소드 중 특수한 메소드
# __init__ : 생성자
- 객체가 생성된 후 가장 먼저 호출되는 메소드- 첫번째 매개변수는 self이며, 이후에 매개변수 추가 가능- 주로 멤버 변수의 초기화 코드로 작성
# __del__ : 소멸자
- 객체가 소멸될 때 호출되는 메소드- 외부자원을 사용하는 경우 해제하는 코드를 주로 작성- self이외의 매개변수를 받지 않음!!- del 객체이름 입력하면 삭제할 수 있음
del jw # __del__이라는 메소드를 호출함
# 정적메소드
- 객체를 생성하지 않고 클래스를 이용해서 직접 호출하는 메소드
- 메소드 내에서 멤버변수를 호출할 수 없고, self 매개변수도 사용하지 않음
- @staticmethod로 수식
- 사용법
class 클래스이름:
@staticmethod
def 메소드이름(매개변수):
실행문장
클래스이름.메소드이름(매개변수) #사용법
# 클래스메소드
- 정적메소드와 유사하지만, 첫번째 변수로 클래스 객체가 전달되는 것이 다름
- cls 매개변수 사용
- 클래스 스스로를 호출하는것이므로 클래스변수에 접근가능함
- 사용법
class 클래스이름:
@classmethod
def 메소드이름(cls):
실행문장
# 사용해보기
- self 매개변수와 cls 매개변수의 차이 : self는 객체를 만들고 객체를 받을 때 사용, cls는 클래스 스스로를 받음
class student:
count = 1
@classmethod
def cmethod(cls):
print('클래스메소드')
print(cls.count) #클래스 스스로를 호출하는것이므로 클래스변수에 접근가능함
@staticmethod
def smethod():
print('정적메소드')
# 특수메소드 - getter & setter
- private변수 : 내부에서는 접근 가능하지만, 외부에서는 접근 불가능한 변수 (private한 변수로 감싸기 위해서는 변수이름 앞에 __를 붙임)
- public변수: 내부와 외부에서 다 접근 가능한 변수 - python의 경우 기본적으로 모든 멤버는 다 public 변수 (그래서 python에서는 getter와 setter가 잘 쓰이지 않음)
- private변수를 사용하기 위해서 getter & setter
class human:
def __init__(self):
self.__age = 31 #private변수
@property #getter선언(private변수에 접근하겠다)
def age_getter(self):
return self.__age
@age_getter.setter #setter선언(private변수를 수정하겠다)
def age_setter(self, value):
self.__age = value
jw = human() #객체생성
jw.age_getter
#31
jw.age_setter = 36
jw.age_getter
#36
* 실습하면서 생긴 오류
jw.age_getter()하면 typeerror남. ()를 뺴고해야 값이 리턴됨
jw.age_setter(36)하면 typeerror남. jw.age_setter = 36해줘야 함.
'Python > Programming basic' 카테고리의 다른 글
상속과 예외처리_02.추상클래스와 isinstance (0) | 2022.06.30 |
---|---|
상속과 예외처리_01.상속 (0) | 2022.06.30 |
클래스_03.객체지향과 절차지향 (0) | 2022.06.27 |
클래스_02.객체와 클래스 (0) | 2022.06.27 |
클래스_01.모듈&패키지 (0) | 2022.06.20 |