혼공학습단/혼자 공부하는 파이썬

[혼공학습단 파이썬] #8-1. 클래스(인스턴스, 생성자, 메소드)

✨️데이터분석가✨️ 2023. 8. 16. 08:00
728x90
728x90
8. 클래스
    1) 클래스 기본
         (1) 객체
         (2) 클래스
         (3) 생성자

         (4) 소멸자
         (5) 메소드
    2) 크기 비교 함수

 

1) 클래스 기본

 

(1) 객체

- 객체(object): 속성을 가질 수 있는 모든 것

객체 지향 프로그래밍: 객체 관련 코드를 효율적으로 작성하는 프로그래밍 (예, class)

 

- 'students'가 객체이고, 딕셔너리를 아래와 같은 함수 형태로 생성하면 오타 등의 실수를 줄일 수 있음 

def input_student(name, korean, math, english):
    return{
        "name": name,
        "korean": korean,
        "math": math,
        "english": english
    }
def total(student):
    return student["korean"] + student["math"] + student["english"]
def average(student):
    return total(student) / 3
def output(student):
    print(student["name"], total(student), average(student), sep="\t")

students = [
    input_student("홍길동", 87, 68, 85),
    input_student("심청이", 97, 64, 73),
    input_student("김철수", 91, 75, 97),
    input_student("김영희", 70, 88, 84),
]

print("name", "total", "average", sep="\t")
for student in students:
    output(student)
더보기

# 실행결과

name    total   average
홍길동  240     80.0
심청이  234     78.0
김철수  263     87.66666666666667
김영희  242     80.66666666666667

 

 

(2) 클래스

- 클래스(class): 객체를 더 효율적으로 생성하기 위한 구문, 틀

- 인스턴스(instance): 클래스 기반으로 생성한 객체, 실체화 된 객체

 

 

(3) 생성자

- 클래스 이름과 같은 함수 (첫 문자는 대문자로 시작)

- class 클래스 이름

    def __init__(self, 추가적인 매개변수...):

    self.매개변수 = 매개변수

  * self: 첫번째 매개변수, 자기자신을 나타내는 딕셔너리

 

 

(4) 소멸자

- 인스턴스가 소멸될 때 호출되는 함수 (생성자 반대)

class 클래스 이름

    def __del__(self, 추가적인 매개변수...):

 

 

(5) 메소드

- 클래스가 가진 함수

- class 클래스 이름

    def 메소드 이름(self, 추가적인 매개변수...):

class Student:
    def __init__(self, name, age):     # → 생성자
        print("객체가 생성되었습니다.")
        self.name = name
        self.age = age
    def __del__(self):      # → 소멸자
        print("객체가 소멸되었습니다.")
    def output(self):       # → 메소드
        print(self.name, self.age)

student = Student("홍길동", 20)
student.output()
더보기

# 실행결과

객체가 생성되었습니다.
홍길동 20
객체가 소멸되었습니다.

 

 

클래스 선언을 통한 학생 성적 관리 프로그램 예시

class Student:
    def __init__(self, name, korean, math, english):
        self.name = name
        self.korean = korean
        self.math = math
        self.english = english
    def total(self):
        return self.korean + self.math + self.english
    def average(self):
        return self.total() / 3
    def output(self):
        print(self.name, self.total(), self.average(), sep="\t")

students = [
    Student("홍길동", 87, 68, 85),
    Student("심청이", 97, 64, 73),
    Student("김철수", 91, 75, 97),
    Student("김영희", 70, 88, 84),
]

print("name", "total", "average", sep="\t")
for student in students:
    student.output()
더보기

# 실행결과

name    total   average
홍길동  240     80.0
심청이  234     78.0
김철수  263     87.66666666666667
김영희  242     80.66666666666667

 

 

 


2) 크기 비교 함수

eq ne gt ge lt le
equal not equal greater than greater than or equal less than less than or equal
같다 다르다 크다 크거나 같다 작다 작거나 같다
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __eq__(self, other):
        return(self.age == other.age) and \
            (self.name == other.name)
    def __ne__(self, other):
        return(self.age != other.age)
    def __qt__(self, other):
        return(self.age > other.age)
    def __ge__(self, other):
        return(self.age >= other.age)
    def __lt__(self, other):
        return(self.age < other.age)
    def __le__(self, other):
        return(self.age <= other.age)

student = Student("홍길동", 20)
print(student == student)
print(student != student)
print(student > student)
print(student >= student)
print(student < student)
print(student <= student)
더보기

# 실행결과

True
False
False
True
False
True

 

 

 

728x90
728x90