클래스 변수, 인스턴스 변수
# 클래스 구조
# 구조 설계 후 재사용성 증가, 코드 반복 최소화, 메소드 활용
class Student():
def __init__(self, name, number, grade, details):
self._name = name
self._number = number
self._grade = grade
self._details = details
def __str__(self):
return 'str : {} - {}'.format(self._name, self._number)
def __retr__(self):
return 'retr : {}'.format(self._name, self._number)
student1 = Student('Kim', 1, 1, {'gender' : 'Male', 'score1' : 95, 'score2' : 88})
클래스 상세 설명
# 클래스 재 선언
class Student():
"""
Student Class
Author : wono.c
Date : 2022.03.29
"""
# 클래스 변수
student_count = 0
def __init__(self, name, number, grade, details, email = None):
# 인스턴스 변수
self._name = name
self._number = number
self._grade = grade
self._details = details
self._email = email
Student.student_count += 1
def __str__(self):
return 'str {}'.format(self._name)
def __repr__(self):
return 'repr {}'.format(self._name)
def detail_info(self):
print('Current Id : {}'.format(id(self)))
print('Student Detail Info : {} {} {}'.format(self._name, self._email, self._details)
def __del__(self):
Student.student_count -= 1
# self 의미
student1 = Student('cho', 2, 3, {'gender' : 'Male', 'score1' : 65, 'score2' : 55})
student2 = Student('chang', 4, 1, {'gender' : 'Female', 'score1' : 85, 'score2' : 74})
# ID 확인
print(id(student1))
print(id(student2))
# dir & __dict__ 확인
print(dir(student1))
print(student1.__dict__)
# Docstring (클래스 주석 내용 확인 할 수 있다)
print(Student.__doc__)
# 인스턴스 변수
# 직접 접근(PEP 문법적으로 권장 x)
print(student1._name) # <- 직접 접근 / 변경 가능성 있다 아래 처럼
# student1._name = 'choi' # 변경 가능성이 있으므로 좋지 않다
# 인스턴스 네임스페이스 없으면 상위에서 검색
# 즉, 동일한 이름으로 변수 생성 가능(인스턴스 검색 후 -> 상위(클래스 변수, 부모 클래스 변수)
'Engineering WIKI > Python' 카테고리의 다른 글
파이썬 비트 논리연산자 (0) | 2022.04.21 |
---|---|
파이썬 정렬 함수 (rjust, ljust, zfill) (0) | 2022.04.20 |
[Python] 파이썬 인스턴스 메서드 / 정적 메서드 / 클래스 메서드 (0) | 2022.04.12 |
알고리즘 INPUT값 TXT 파일로 입력하기 (Feat. VSC) (0) | 2022.04.07 |
[Python] itertools 완전탐색 (0) | 2022.03.06 |
[Python] FastAPI 사용법 (0) | 2021.04.13 |
[Python] One-line Tree in Python (0) | 2021.02.21 |
[Python] pyinstaller 실행파일 생성 (0) | 2021.02.21 |