본문 바로가기
Learning/Python

파이썬 강좌_#14_클래스

by HappyStar 2020. 6. 14.
반응형

오늘은 클래스에 대해 알아보도록 하겠습니다. 클래스는 프로그래밍할 때 꼭 필요한 요소는 아닙니다. c언어 같은 경우는 class가 없습니다. 그러면 class가 없어도 된다는 뜻이겠죠? 그런데도 사용하는 이유가 무엇일까요? 

아래의 예제를 한번 볼까요?

result = 0
result1 = 0

def sum1(x):
    global result
    result+=x
    return result
def sum2(x):
    global result1
    result1+=x
    return result1
print(sum1(10))
print(sum1(5))
print(sum2(20))
print(sum2(3))

 

출력

10
15
20
23

 

이 예제는 result변수를 여러 개 만들었기 때문에 여러 값이 저장될 수 있었습니다. 하지만 만약 result(결괏값)이 5000만 개가 필요하다면 result 변수가 5000만 개가 필요하겠죠? 그러면 코드가 가독성이 없고 개발이 지루 해질 겁니다.

 

클래스의 구조

class 클래스명:
	def 함수명(매개변수):
    	코드
    def 함수명1(매개변수):
    	코드
        
#클래스 사용 및 출력 방법
class1 = 클래스명()
print(class1.함수명(매개변수))

 

객체와 클래스

클래스와 객체를 비유 하자면 클래스는 쿠키를 만드는 틀에 비유할 수 있고, 객체는 틀을 사용해 만든 쿠키라고 할 수 있

습니다. 객체는 자신의 고유한 값을 가지게 됩니다. 예를 들어 쿠키 틀을 이용하여 쿠키를 2개를 만들었을 때 1개의 쿠키에 초코칩을 5개 올렸을 때 나머지 쿠키에 초코칩 5개가 올라가지 않듯이 객체도 자신의 고유한 값을 가지게 됩니다.

 

클래스 호출 및 매개변수 값 입력하기

class Test:
    def input_data(self, x, y):
        self.first = x
        self.second = y
    def add(self):
        result = self.first + self.second
        return result
a = Test()
a.input_data(10, 5)
print(a.add())

위의 코드는 클래스를 호출하고 매개변수를 입력하여 값을 출력하는 코드입니다. input_data함수에 매개변수로 있는 self라는 예약어가 있습니다. 이 예약어는 객체를 호출할 때 자기 자신이 전달되기 때문에 필요합니다. 그리고 여기서 들어온 매개변수를 클래스 안의 매서드(함수)에서 사용하고 싶을 땐 그 함수의 매개변수에 self를 입력한 뒤 self. 변수명을 사용하면 됩니다.

 

생성자

위의 클래스 호출 방식을 사용하면 나중에 클래스가 많아지게 되면 가독성이 없어집니다. 그래서 우리는 생성자라는 것을 사용하게 됩니다. 사용 방식은 아래와 같습니다.

class Test:
    def __init__(self, x, y):
        self.first = x
        self.second = y
    def add(self):
        result = self.first + self.second
        return result
a = Test(10, 5)
print(a.add())

위의 코드는 input_data 메서드(함수)를 __init__이라는 예약어를 사용하게 됩니다. 그러면 a라는 변수에 Test클래스를 대입할 때 매개변수의 값도 함께 넣어준 뒤 메서드를 실행해주면 됩니다.

 

상속

상속은 클래스에서 사용되는 기능입니다. 이 기능은 1번 클래스에서 2번 클래스의 기능을 가져야 할때 사용합니다. 

아래는 상속의 예제 입니다.

class Test:
    def __init__(self, x, y):
        self.first = x
        self.second = y
    def add(self):
        result = self.first + self.second
        return result
    
class Test1(Test):
    def add1(self):
        result1 = self.first + self.second + 10
        return result1
a = Test1(10, 5)
print(a.add())

Test클래스에 있는 add를 Test 1 클래스가 상속을 받으니 Test 1 클래스에서 Test클래스에 있는 add함수를 실행할 수 있습니다. 

 

-끝- 유익하셨다면 공감 버튼을 눌러주세요!

 

 

반응형

'Learning > Python' 카테고리의 다른 글

파이썬 강좌_#13_함수  (14) 2020.05.26
파이썬 강좌_#12_while문  (2) 2020.05.26
파이썬 강좌_#11_for문  (18) 2020.05.13
파이썬 강좌_#10_if문  (3) 2020.05.13
파이썬 강좌_#9_딕셔너리  (2) 2020.05.12

댓글