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 Server-talk 서버이야기
    • La
      2018.06.17 16:26

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

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