파이썬/파이썬 자습 노트

파이썬 공부 요약 노트 3. 클래스

Tomitom 2022. 10. 20. 12:21
반응형
 
 
객체지향 프로그래밍 - 여러 데이터간의 상호작용을 통해서 진행된다.

vs 

절차 지향 프로그래밍(프로시저 지향) - 정해진 시나리오대로 혼자 진행한다. 
ex) 자동차가 움직이는 것(자율주행프로그램은 오로지 자동차가 하는 것), 
    바이올린을 켜는 것. 
 




def creat_student(name, korean, math, english, science):
    return {
        "name" : name,
        "korean" : korean,
        "math" : math,
        "english" : english,
        "science" : science
    }

def student_get_sum(student):
    return student["korean"] + student["math"] +\
        student["english"] + student["science"]

def student_get_average(student):
    return student_get_sum(student) / 4

def student_to_string(student):
    return "{}\t{}\t{}".format(
        student["name"],
        student_get_sum(student),
        student_get_average(student))


student = [
    creat_student("윤인성", 87, 98, 88, 95),
    creat_student("연하진", 54, 87, 87, 98),
    creat_student("구지연", 58, 79, 87, 97),
    creat_student("나선주", 87, 97, 93, 91)
]
 
for students in student:
    print(student_to_string(students))



 


속성(프로퍼티) : 데이터.??? <- 데이터 뒤에 점을 찍고 쓰는 파일확장자 등 

class 클래스 이름 : 
   클래스내용 
(자료형 = 클래스)
변수와 함수, 만드는 클래스는 이런 구조를 가진다고 하는 것

변수와 함수는 괄호로 구분하고 클래스는 대문자를 포함한 캐멀 케이스 규칙으로 구분한다. 클래스 이름이 단어 두개 이상으로 되어 있으면 캐멀 클래스로 지어야 한다. 
ex) BeautifulSoup()

함수는 만들면서 괄호를 넣음
클래스는 만들면서 괄호를 넣지 않음

클래스를 사용할 때는 마치 함수처럼 () 괄호를 쓰면 된다. -> 생성자를 호출했다. (객체를 생성한다.) 클래스의 값은 객체이므로 변수로 저장할 수 있음 
인스턴스 - 클래스로부터 탄생한 이름


class Student :    -> Student 형 자료를 만들기 위해 설계하는 것  클래스
   pass 

s = Student -> Student 형 자료가 만들어짐. 인스턴스 


class Bird :     
    pass     
(bird 는 생성자, 생성자를 호출해서 생성한 결과 값은 인스턴스) 

클래스 내부에 함수를 정의할 때에는 반드시 __init__(self, 추가 매개변수) : <- 로 입력해야 한다. self 는 매개변수인데 사용하지 않는 매개변수 
self는 매개변수지만 인수를 받지 않는다. 
자신이 가지고 있는 속성을 구분하기 위해서 사용한다. 

b1 = Bird( )
b2 = Bird( )
b1, b2는 생김은 같아도 속성은 다르다. 서로 다른 것.
self는 b1에서는 b1를 뜻하고 b2 에서는 b2의 속성을 뜻한다. 


class Student :
    def __init__(self, name, korean, math, english, science):
        self.name = name
        self.korean = korean
        self.math = math
        self.english = english
        self.science = science
 
    def get_sum(self):
        return self.korean + self.math + self.english + self.science

    def get_average(self):
        return self.get_sum() / 4

    def to_string(self):
        return "{}\t{}\t{}".format(\
            self.name,\
            self.get_sum(),\
            self.get_average())

students = [
    Student("윤인성", 87, 98, 88, 95),
    Student("연하진", 54, 87, 87, 98),
    Student("구지연", 58, 79, 87, 97),
    Student("나선주", 87, 97, 93, 91)
]

print("이름", "총점", "평균", sep="\t")
for student in students :
    print(student.to_string())


 

 

 

a = Student()

객체 a는 Student() 클래스 에 의해 만들어진 인스턴스.

객체는 속성(속성 값, 기능)을 가진 데이터

속성 값에 해당하는 것이 변수이고, 기능을 해당하는 것이 함수. 

 

1 == 1 은 같은 대상이기 때문에 True

"a" == "a" 또한. 

 

객체와 객체를 비교하면 False 가된다. 

 

class Person : 

     def __init__(self, age) : 

     self.age = age

 

b1 = Person(3)

b2 = Person(2)

b1 == b2

False

 

 

상속 : 가지고 있는 것을 다른 클래스에게 물려주는 것

클래스의 상속 : 

클래스가 가지고 있는 것(속성. 속성값, 메소드(변수와 함수)) 을 어떤 대상에게 물려주는 것

상속을 받은 쪽에서는 물려받은 것을 그대로 사용하거나 수정하거나 추가한다. 

 

상속은 주로 코드를 재사용 하되, 기능을 추가하고자 할 때 

바람직한 상속의 흐름은  부모 클래스와 자식 클래스가 연관이 있어야 한다. 

새 -> 독수리 -> 대머리 독수리 

사람 -> 돌고래 -> 대왕 돌고래 

 

 

반응형