Python(파이썬) - 인스턴스 변수와 메서드 알아보기




    지난시간에는 계산기 제작하는 과정에서 클래스와 생성자를 알아보았는데요 클래스안에서 사용될 인스턴스 변수와 메서드는 무엇이고 어떠한 역할을 하는지 알아보도록 하겠습니다


    관련글 :


    Python(파이썬) - 객체(Object) - http://server-talk.tistory.com/210


    Python(파이썬) - 객체제작 - http://server-talk.tistory.com/212


    Python(파이썬) - Class(클레스)와 생성자 - http://server-talk.tistory.com/211






     Python(파이썬) - 메소드 제작하기





    위 그림은 객체제작때 사용한 그림입니다

    함수부분의 sum, sub, multi, dvide 가 바로 메소드 이며, 이번 포스팅부터는 함수를 메서드로 지칭하여 부르도록 하겠습니다


    이제 클래스안에 sum 이라는 메소드를 추가해보도록 하겠습니다



    class Calc(object):
        def __init__(self, num1, num2):
            print(num1,num2)
    
        def sum():
    
    C1 = Calc(20,10)
    


    5번째 줄에 보시면 sum이라는 메소드가 추가된것을 확인 하실수 있습니다


    문법은 함수문법과 동일합니다.



    class Calc(object):
        def __init__(self, num1, num2):
            print(num1,num2)
    
        def sum():
    	return num1 + num2
    
    C1 = Calc(20,10)
    print(C1.sum())
    


    이제 메소드의 전달한 매개변수의 값을 더한 값을 돌려 sum함수의 리턴값으로 만들었으며, print함수를 이용하여 C1의 객체의 sum 함수를 실행하게 되면 에러가 발생하게 됩니다

    생성자에 전달받은 num1, num2 의 매개변수는 지역변수이기 때문입니다






     Python(파이썬) - 인스턴스 변수



    위의 코드를 이용하여 메소드를 제작후 실행하였다면 실행이 안되지 않고 에러가 발생 되었을 것입니다

    실행이 되지 않는 이유는 생성자로 전달한 매개변수는 지역변수이기 때문입니다




    위 그림을 보시면 num1, num2는 지역변수이기때문에 실행이 되지 않았던 것입니다

    그렇다면 클래스 안에 모든 메소드들이 변수를 사용하려면 인스턴스 변수를 선언해 주어야 합니다



    class Calc(object):
        def __init__(self, num1, num2):
            self.n1 = num1
            self.n2 = num2
    
        def sum(self):
    	       return self.n1 + self.n2
    
    C1 = Calc(20,10)
    print(C1.sum())
    


    3, 4번째 줄을 보시면 첫 번째 매개변수를 이용하여 변수를 지정한 것을 보실 수 있습니다

    생성자 포스팅에서 말씀드린 것처럼 첫 번째 매개변수가 인스턴스라고 하였습니다

    즉 생성자의 첫 번째 매개변수(인스턴스)를 이용하여 인스턴스의 소속되어 있는 변수를 지정하게 되는 것입니다


    또한 메소드에서 인스턴스 변수를 사용하기 위해 sum 또한 매개변수 self를 넣어주신 후 사용하시면 됩니다.




    실행결과를 보시면 20 + 10의 결과값이 나오는 것을 확인 하실수 있습니다.




    class Calc(object):
        def __init__(self, num1, num2):
            self.num1 = num1
            self.num2 = num2
    
        def sum(self):
    	       return self.num1 + self.num2
    
        def sub(self):
    	       return self.num1 - self.num2
    
    C1 = Calc(20,10)
    print(C1.sum())
    print(C1.sub())
    




    이번에는 코드상에 빼기 함수를 추가하였으며, 실행결과를 보시면 20 - 10의 결과값이 나오는 것을 확인 하실수 있습니다.


    Posted by 서버이야기
    • La
      2018.06.17 16:26

      감사합니다 덕분에 이해했습니다.

      • Favicon of https://server-talk.tistory.com BlogIcon 서버이야기
        2018.06.18 09:53 신고

        제가 이해한대로 최대한 풀어서 포스팅하였는데,
        이해하는데 도움이 되었다니 다행이네요^^

    • QUESTION
      2020.11.15 00:37

      정확히 Clsc가 뭔가요?

      • Favicon of https://server-talk.tistory.com BlogIcon 서버이야기
        2020.11.15 18:14 신고

        방문해주셔서 감사합니다.

        Clsc가 어떠한것인지 좀더 자세하게 설명해주셔야지 답변을 해드릴수 있을것 같습니다

        포스팅에 대해서 간단한 부현설명을 드린다면 class에 대해 보다 이해하기 쉽도록 모식도로 그려서 표현한 내용이며,

        코드는 파이썬을 이용하여 간단한 계산기 프로그램을 작성한 내용입니다

        감사합니다.!

    • QUESTION
      2020.11.15 19:04

      네 감사합니다

    • Favicon of https://lightningattack.tistory.com BlogIcon 모스투
      2022.07.27 21:17 신고

      정말 감사합니다 잘 배웠습니다.