-
79 - (파이썬) 클래스 등장 이전study with Q - 파이썬 2024. 8. 26. 21:37
#클래스 등장 이전에는 어떤 코드를 사용하고, 그로 인해 어떤 문제가 있었나
eg) 학생들의 성적을 저장해두고 평균과 합계를 출력하는 프로그램
B.C. code (Before Class)
야옹들 = [ {"이름":"레오", "귀여움":100, "야옹함":100, "양말":100, "사냥":0}, {"이름":"미루", "귀여움":100, "야옹함":30, "양말":90, "사냥":80}, {"이름":"별이", "귀여움":100, "야옹함":10, "양말":0, "사냥":20}, {"이름":"여름", "귀여움":100, "야옹함":60, "양말":10, "사냥":60} ] print("이름", "총점", "평균", sep="\t") for 애옹 in 야옹들: 총점 = 애옹["귀여움"] + 애옹["야옹함"] + 애옹["양말"] + 애옹["사냥"] 평균 = 총점 / 4 print(애옹["이름"], 총점, 평균, sep="\t") >>> 이름 총점 평균 레오 300 75.0 미루 300 75.0 별이 130 32.5 여름 230 57.5
규모가 커지게 되면 휴먼에러가 발생할 수 있다.
- 학생 생성 때 실수가 발생할 수 있다
- 총점과 평균을 구하는 사양에 변경이 발생했을 때 변경 누락이 생기거나 수정에 시간이 오래 걸릴 수 있다.
그래서
# 생성을 획일화 def create_cat(이름, 귀여움, 야옹함, 양말, 사냥): return {"이름":이름, "귀여움":귀여움, "야옹함":야옹함, "양말":양말, "사냥":사냥} 야옹들 = [ create_cat("레오", 100, 100, 100, 0), create_cat("미루", 100, 30, 90, 80), create_cat("별이", 100, 10, 0, 20), create_cat("여름", 100, 60, 10, 60) ] #사양의 변경도 함수로 def sum_cat(애옹): return 애옹["귀여움"] + 애옹["야옹함"] + 애옹["양말"] + 애옹["사냥"] def average_cat(애옹): return sum_cat(애옹)/4 print("이름", "총점", "평균", sep="\t") for 애옹 in 야옹들: 총점 = sum_cat(애옹) 평균 = average_cat(애옹) print(애옹["이름"], 총점, 평균, sep="\t")
위와 같이 바꾸고 리팩토링을 하면
def create_cat(이름, 귀여움, 야옹함, 양말, 사냥): return {"이름":이름, "귀여움":귀여움, "야옹함":야옹함, "양말":양말, "사냥":사냥} def sum_cat(애옹): return 애옹["귀여움"] + 애옹["야옹함"] + 애옹["양말"] + 애옹["사냥"] def average_cat(애옹): return sum_cat(애옹)/4 야옹들 = [ create_cat("레오", 100, 100, 100, 0), create_cat("미루", 100, 30, 90, 80), create_cat("별이", 100, 10, 0, 20), create_cat("여름", 100, 60, 10, 60) ] print("이름", "총점", "평균", sep="\t") for 애옹 in 야옹들: 총점 = sum_cat(애옹) 평균 = average_cat(애옹) print(애옹["이름"], 총점, 평균, sep="\t") >>> 이름 총점 평균 레오 300 75.0 미루 300 75.0 별이 130 32.5 여름 230 57.5
But...
여전히 문제가 남아있으니
1) 합계를 구하는 함수가 있는지 + 평균을 구하는 함수가 있는지 자체를 모름
2) "애옹들"이라는 변수에 직접적으로 접근할 수 있다는 것
3) 함수가 분산되어 있다는 것
그래서 이 것을 보완하는 것은 다음 강의에서...
'study with Q - 파이썬' 카테고리의 다른 글
81 - 83 (파이썬) 강의 정리 포기, 코드 복붙 (1) 2024.09.01 80 - (파이썬) 클래스 문법 기본 (4) 2024.08.27 78 - (파이썬) 객체 지향 프로그래밍 (1) 2024.08.26 77 - (파이썬) 예외 강제 발생 (0) 2024.08.21 76 - (파이썬) 예외 객체와 예외 구분 (0) 2024.08.21