관리 메뉴

13. 파이썬(Python) 클래스(Class)2 본문

Python/Python 기본 개념

13. 파이썬(Python) 클래스(Class)2

ª_ª 2017. 10. 20. 10:04
728x90
반응형



 

클래스를 사용해서 기본 학사관리 예제를 만들어 보겠습니다.

 

기본 학사관리 예제1(SetMember : o, __init__ : x)

>>> class Student1:

def SetMember(self, number, name, age, major):

self.number = number # 학번

self.name = name        # 이름

self.age = age             # 나이

self.major = major     # 전공


def ShowInfo(self):

print("====================")

print("학번 : %s" %self.number)

print("이름 : %s" %self.name)

print("나이 : %s" %self.age)

print("전공 : %s" %self.major)

print("====================")

기본적으로 학번, 이름, 나이, 전공을 넣도록 만들었습니다.


>>> stu1 = Student1()

>>> stu1.ShowInfo()

====================

Traceback (most recent call last):

File "<pyshell#12>", line 1, in <module>

stu1.ShowInfo()

File "<pyshell#10>", line 9, in ShowInfo

print("학번 : %s" %self.number)

AttributeError: 'Student1' object has no attribute 'number’

에러가 나는 이유는 값이 들어가 있지 않아서 그렇습니다.

 

값을 넣어 보겠습니다.

>>> stu1.SetMember(20171020, "홍길동", 20, "Computer")

>>> stu1.ShowInfo()

====================

학번 : 20171020

이름 : 홍길동

나이 : 20

전공 : Computer

====================

결과가 잘나오는 것을 확인 할 수 있습니다.

 

객체를 생성 하고나서 바로 ShowInfo()함수를 사용하는 경우가 있는데 그렇게 되면 계속 에러 구문을 발생시킬 것입니다. 이것을 해결하기 위해서는 앞서 배웠던 __init__를 사용하면 해결됩니다.

 

기본 학사관리 예제2(SetMember : x, __init__ : o)

>>> class Student2:

def __init__(self, number, name, age, major):

self.number = number 학번

self.name = name        이름

self.age = age             나이

self.major = major     전공


def ShowInfo(self):

print("====================")

print("학번 : %s" %self.number)

print("이름 : %s" %self.name)

print("나이 : %s" %self.age)

print("전공 : %s" %self.major)

print("====================")

 

>>> stu2 = Student2()

Traceback (most recent call last):

File "<pyshell#17>", line 1, in <module>

stu2 = Student2()

TypeError: __init__() missing 4 required positional arguments: 'number', 'name', 'age', and 'major’

앞에서 봤듯이 __init__는 필수적으로 값을 채워줘야 하기 때문에 값을 넣어 주지 않으면 이렇게 에러 구문을 발생시킵니다.

 

>>> stu2 = Student2(20170002, "은길홍", 21, "Computer")

안에 값을 채워 넣으면 에러가 발생하지 않는 것을 확인 할 수 있습니다.

 

>>> stu2.ShowInfo()

====================

학번 : 20170002

이름 : 은길홍

나이 : 21

전공 : Computer

====================

결과가 잘 출력 됩니다.

 

__init__를 활용해서 값을 넣지 않으면 객체가 생성되지 않는 것을 확인했습니다. 하지만 값을 잘 못 입력하면 값을 수정을 못하고 다시 객체를 생성해야 되는 불편함이 생겼습니다. 그걸 해결하기 위해서 SetMember()을 추가 하면 됩니다.

 

기본 학사관리 예제3(SetMember : o, __init__ : o)

>>> class Student3:

def __init__(self, number, name, age, major):

self.number = number 학번

self.name = name        이름

self.age = age             나이

self.major = major     전공


def SetMember(self, number, name, age, major):

self.number = number 학번

self.name = name        이름

self.age = age             나이

self.major = major     전공


def ShowInfo(self):

print("====================")

print("학번 : %s" %self.number)

print("이름 : %s" %self.name)

print("나이 : %s" %self.age)

print("전공 : %s" %self.major)

print("====================")


>>> stu3 = Student3(20170003, "홍길순", 20, "Computer")

>>> stu3.ShowInfo()

====================

학번 : 20170003

이름 : 홍길순

나이 : 20

전공 : Computer

====================

 

이름과 나이가 잘못 입력되었다면

>>> stu3.SetMember(20170003, "임꺽정", 21, "Computer")

SetMember라는 함수를 사용해서 변경할 수 있습니다.

 

>>> stu3.ShowInfo()

====================

학번 : 20170003

이름 : 임꺽정

나이 : 21

전공 : Computer

====================

만약 틀린 것이 한가지 라면 수정하는 부분을 각각  SetNumber(), SetName(), SetAge(), SetMajor()같은 함수를 만들어서 사용하시면 됩니다.



파이썬(Python) 클래스 연습문제 풀러가기





728x90
반응형
Comments