Python

1-9-1. 클래스 기초적인 부분 알아보기

클래스(class)라는 것을 기반으로
객체(object)를 만들고,
그러한 객체를 우선으로 생각해서
프로그래밍하는 것을 이념으로 삼고 있습니다.


객체

업무 프로그램을 만든다면
이름, 식별번호, 성적 등이 필요하며

리스트와 딕셔너리로 표현하기

# 사람 리스트 선언
people = [
	{"name": "윤신종", "number": 1, "korean": 88, "math": 90},
	{"name": "김이박", "number": 2, "korean": 80, "math": 95},  
	{"name": "박이윤", "number": 3, "korean": 90, "math": 93}
]

print("이름", "총점", "평균", sep='\t')

for person in people:
    # 점수 총합과 평균 구하기
    score_sum = person["korean"] + person["math"]
    score_average = score_sum / 2
    
    print(person["name"], score_sum, score_average, sep="\t")

함수로 객체 만들기

def create_person(name, number, korean, math):
	return {
    	"name": name,
      	"number": number,
      	"korean": korean,
      	"math": math
    }

# 학생 리스트 선언
people = [
	create_person("윤종신", 1, 99, 98),
  	create_person("김이박", 2, 98, 22),
    create_person("윤이슬", 3, 100, 23),
    create_person("감바삭", 3, 100, 23)
]
print("이름","번호","총점", sep='\t')
for person in people:
    score_sum = person["korean"] + person["math"]
    
    print(person["name"], person["number"], score_sum, sep="\t")
클래스

클래스 선언하기

객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문입니다.

형태

class  이름:
    클래스 내용

인스턴스 이름(변수 이름) = 클래스 이름() -> 생성자 함수라고 부릅니다.

클래스를 기반으로 만들어진 객체를 인스턴스(instance)라고 부릅니다.

# 선언
class Person:
    pass
# 사람을 선언
person = Person()

# 사람 리스트 선언
person = [
	Person(),
	Person(),
	Person(),
	Person()  
]

생성자

클래스 이름과 같은 함수를
생성자(constructor)라고 부릅니다.

class 클래스 이름:
	def __init__(self, 추가적인 매개변수):
    	pass

클래스 내부 함수는
첫 번째 매개변수로 self를 입력해야합니다.
self는 ‘자기자신’을 나타내는 딕셔너리라고 생각하면 됩니다.

# 선언하기
class Person:
    def __init__(self, name, korean, math, english, science):
        self.name = name
        self.korean = korean
        self.math = math
        self.english = english
        self.science = science
        
# 학생 리스트를 선언
people = [
	Person("이춘백", 98, 89, 88, 95),
	Person("김기백", 99, 100, 50, 80),
	Person("김현진", 96, 56, 70, 40),
	Person("김이현", 98, 87, 99, 90)
]

# People 인스턴스의 속성에 접근하는 방법
print(people[0].name) # 이춘백
print(people[0].korean) # 98
print(people[0].math) # 89
print(people[0].english) # 88
print(people[0].science) # 95

소멸자(__del__)

class Test:
	def __init__(self, name):
		self.name = name
        print("{} - 생성되었습니다.".format(self.name))
    def __del__(self):
        print("{} - 파괴되었습니다.".format(self.name))
test = Test("A")

메소드

클래스가 가지고 있는 함수를
메소드(method)라고 부릅니다.

# 선언
class Person:
	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("이춘백", 98, 89, 88, 95),
	Student("김기백", 99, 100, 50, 80),
	Student("김현진", 96, 56, 70, 40),
	Student("김이현", 98, 87, 99, 90)
]

# 한 명씩 반복
print("이름", "총점", "평균", sep=\t)
for student in students:
	print(student.to_string())

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다