python
[python] class 중간 정리
전감자(◔◡◔)
2022. 9. 26. 21:09
'''
분석단계
고양이객체 추출 ===============> 클래스
속성: 이름, 나이, 성별,.. =====> 인스턴스 변수
동작: 먹기(), 자기(), 나이변경(),.... =======> 인스턴스 메서드
실제 고양이 2마리
이름: 야옹이
나이: 2
성별: 암컷
이름: 나비
나이: 3
성별: 숫컷
'''
'''
1. 로컬변수
=> self없는 변수들
=> 용도: 임시적으로 임의의 값을 저장하는 용도
=> 메서드 호출할때마다 생성 ~ 메소드 실행이 끝날때 제거
2. 인스턴스 변수
=> self있는 변수들
=> 용도: 고양이(객체)의 속성 정보저장( 이름, 나이, 성별)
=> 객체 생성마다 매번 생성 ~ 객체 소멸할때 제거
* 객체소멸 시점?
==> 참조하는 변수가 없을 때
'''
class Cat:
# 생성자 ==> 역할: 인스턴스변수 초기화
def __init__(self, username, age, gender): # username, age, gender는 로컬변수, stack메모리에 생성
# 인스턴스변수, B메모리(heap)에 저장
self.username = username
self.age = age
self.gender = gender
# setter 메서드
def set_username(self, username):
# 검증처리
self.username = username
def set_age(self, age):
# 검증처리
self.age = age
def set_gender(self, gender):
# 검증처리
self.gender = gender
# getter 메서드
def get_username(self):
return self.username
def get_age(self):
return self.age
def get_gender(self):
return self.gender
c1 = Cat("야옹이", 2, "암컷") # 객체 소멸된다. 이유는 참조하는 변수가 없기 때문에
c2 = Cat("나비", 3, "숫컷")
c1 = Cat("이쁜", 1, "숫컷")
# 특정값 수정
c1.set_age(3)
# 조회1- 직접 인스턴스변수 접근
print("고양이1 정보, 이름:{},나이:{}, 성별:{}".format(c1.username, c1.age, c1.gender))
print("고양이1 정보,이름:{},나이:{}, 성별:{}".format(c2.username, c2.age, c2.gender))
# 조회2- 메서드 이용한 접근
print("고양이1 정보, 이름:{},나이:{}, 성별:{}".format(c1.get_username(), c1.get_age(), c1.get_gender()))
print("고양이2 정보, 이름:{},나이:{}, 성별:{}".format(c2.get_username(), c2.get_age(), c2.get_gender()))