Story of CowHacker

파이썬_클래스 본문

공부/Python

파이썬_클래스

Cow_Hacker 2021. 6. 6. 04:08
728x90

파이썬 클래스!!

 

파이썬에 있는 클래스에 대해 알아보겠다.

 

먼저 왜 클래스가 만들어졌는지 왜 사용하는지에 대해 말하자면

내 친구의 사촌분인, 15년 차 개발자께서 말씀한 것에 따르면

 

 

**

1. 파이썬 초기에는 함수로도 충분히 코딩이 가능한 수준이었다.

2. 하지만 기술이 발전하고 더 큰 프로그램 구동이 필요하게 됐다.

3. 함수도 충분히 코드를 간단히 효율적으로 사용할 수 있다.

4. 하지만 더 큰 프로그램을 구동하기에 수정과 동시 연동을 하기에는 턱없이 비효율적이었다.

5. 클래스는 이런 함수의 단점을 보완할 수 있는 녀석이다.

**

 

 

 

 

 

testnum = 0
testnum2 = 0

def add(a):
    global testnum
    testnum += a
    return testnum

def add2(a):
    global testnum2
    testnum2 += a
    return testnum2

print(add(1))
print(add2(2))

위 코드를 보면 testnum, testnum2라는 변수를 함수를 사용하여 쓰려면 global 변수를 써줘야 하는 것이 보인다.

global 변수는 썩 좋지 않은 녀석이다.

 

그리고 만약 또 다른 역할을 하는 함수를 쓰려면 add3와 같은 함수를 하나 더 만들어 줘야 한다.

상당히 비효율적인 모습이다.

 

 

 

 

 

 

 

class testclass:
    def __init__(self):
        self.testnum = 0

    def add(self, a):
        self.testnum += a
        return self.testnum


print(testclass().add(1))
print(testclass().add(2))

클래스를 사용한 코드를 보면 testnum를 사용하기 위해 global 변수를 적지 않았고,

굳이 testnum2를 만들 필요 없이 testnum하나로 동시 사용 가능하고,

무엇보다 동시 출력을 위해 같은 함수 두 개를 만들 필요가 없어진 모습을 볼 수 있다.

 

 

 

 

 

 

이까지 클래스를 왜 사용해야 하는지 살펴봤다.

 

이제 클래스는 어떻게 사용하는지에 대해 알아보겠다.

 

 

 

 

 

class testclass:
    pass

print(type(testclass()))

가장 기본적인 클래스를 적어봤다.

pass는 아무것도 안 한다는 의미다.

타입은 역시나 클래스다.

 

 

 

 

 

 

 

 

그럼 이제 클래스를 사용하여 이전 글인 ' 파이썬_함수 ' 에서 사용한 함수를 같이 써보겠다.

 

https://cowhacker.tistory.com/117

 

파이썬_함수

파이썬을 사용하면서 함수라는 녀석을 사용하면 좀 더 효율적이고, 가독성이 뛰어난 코딩을 할 수 있다. 함수란? 수학에서 나온 함수와 파이썬에서 나온 함수는 같은 의미로 사용되고 있다. 코

cowhacker.tistory.com

바로 위 사진에 보이는 부분이다.

 

 

 

 

 

 

 

 

class testclass:

    def source(self, a, b):
        self.a = a
        self.b = b

    def add(self):
        return self.a + self.b

test = testclass()
test.source(1,2)
print(test.add())

어떤 차이가 있나 보면

먼저 처음 ' 파이썬_함수' 코드에서 쓰이는

1번 2번 줄이 클래스를 사용한 코드에서는 source함수로 변한 것이다.

그리고 add함수는 클래스 안에 들어 있는 걸 볼 수 있다.

 

 

여기서 10번 줄 보면 source에게 매개변수 2개를 넘겨주는 걸 볼 수 있는데

클래스 안에 있는 source함수를 보면 받는 매개 변수가 3개인걸 알 수 있다.

 

 

 

 

 

 

 

위 사진을 보면 단번에 이해가 될 것이다.

self 변수에는 testclass를 호출한 객체 test가 자동으로 전달되기 때문에 결론적으로는 3개의 매개변수를 넘겨준 셈이다.

 

여기서 차이점을 느낀 사람이 있을 것이다.

 

처음 코드를 다시 보면

 

 

 

 

 

 

2번 줄에 __init__를 사용한 것이 보인다.

하지만 방금 코드에선 __init__대신 source를 사용했다.

이 둘의 차이점은 source는 매서드고, __init__는 생성자 ( constructor )가 된다.

 

source메서드의 역할은 변수를 선언하는 것이다. 

이처럼 변수를 선언하는 경우는 생성자 __init__를 사용하는 것이 좋다.

 

 

 

 

 

class testclass:

    def __init__(self, a, b):
        self.a = a
        self.b = b

    def add(self):
        return self.a + self.b

print(testclass(1,2).add())

 

10번 줄을 보면 확실히 아까와는 다르게 간단히 클래스를 호출하고 사용하는 것을 볼 수 있다.

 

 

이까지 클래스에 대해 알아봤다.

 

 

 

래스는

애정 깊은

킬이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'공부 > Python' 카테고리의 다른 글

파이썬_함수  (0) 2021.06.04
크롤링  (4) 2021.03.30
Comments