Python & Ruby

인스턴스 변수와 메소드

 

Ruby

class Cal
  def initialize(v1,v2)
    @v1 = v1
    @v2 = v2
  end
  def add()
    return @v1+@v2
  end
  def subtract()
    return @v1-@v2
  end
end
c1 = Cal.new(10,10)
p c1.add()
p c1.subtract()
c2 = Cal.new(30,20)
p c2.add()
p c2.subtract()
 

Python

class Cal(object):
    def __init__(self, v1, v2):
        self.v1 = v1
        self.v2 = v2

    def add(self):
        return self.v1+self.v2

    def subtract(self):
        return self.v1-self.v2


c1 = Cal(10,10)
print(c1.add())
print(c1.subtract())
c2 = Cal(30,20)
print(c2.add())
print(c2.subtract())

 

댓글

댓글 본문
  1. SONNY
    21.08.12
  2. Victorim
    완료!
  3. 냥더쿠
    210805
  4. 나영쓰
    210721
  5. 미뇨르
    210703 완료!!
  6. 정효빈
    잘들었습니다
  7. 드림보이
    잘 들었습니다...
  8. Twayne
    2021.03.15
  9. 용만
    2021년 3월 8일 완료했습니다.
  10. 후니
    완료
  11. Hyunwoo Kim
    210204 감사히 잘 들었습니다.
  12. loveahav
    2021.2.1
    개념은 어렴풋하게 이해하겠는데
    적용은 정말 어렵네요 ㅠㅠㅠㅠ
    네이버로 찾아봤는데 붕어빵만 생각나는..ㅋㅋㅋ

    https://terms.naver.com......316
  13. 이에이
    1월 15일
  14. 오늘부터 시작
    2021.1.3
  15. 이현수
    20.12.21
  16. 윤유상
    루비는 인스턴스변수를 설정할 때 변수명 앞에 @를 넣어주고, 파이썬은 클래스 자신을 가리키는 매개변수 self를 첫 번째로 설정해 self.변수명 형식으로 인스턴스변수를 만든다.
    왜 초기화 변수에 생성자를 넣는지 알게되었네요 ㅎㅎ 처음 인스턴스를 생성할 때 초기화 변수를 실행해 생성자를 인스턴스변수로 만들 수 있기 때문인 것 같습니다! 감사합니다!
  17. 홍주호
    20.12.7
  18. 이영석
    11월 24일 루비까지 완료!
  19. cgoing
    cgoing / 2020.09.28
  20. 허우룩
    2020.09.23
  21. acs0209
    2번쨰 시청 이제야 이해가 된다 ㅠㅠ
  22. 캄바캄바
  23. PlayerSEAN
    쿠키앤크림님 따라잡기
    2020/08/04 완료
  24. 쿠키앤크림
    pupu님 따라잡기
    2020/07/03 완료
  25. 허클베리핀
    6/5_완료
  26. 김광현
    6/3완료
  27. oxugi
    2020/3/24 완료
    생성자 메소드에서 인스턴스 변수화 중요

    파이선의 메소드들은 첫 번째 매개변수를 반드시 정의해야함.
    첫 번째 매개변수는 언제나 그 인스턴스가 된다.
    첫 번재 매개변수의 이름은 아무거나 지정해도 되지만
    관습적으로 self를 사용한다.
    이것은 파이선에서의 약속
  28. 김프로
    기존보다 좀더 이해가 되긴 하는데 아직 익숙치 않네요 ㅜㅜ 이부분이 중요한것 같아 다시 봅니다.
    감사합니다.
  29. 김프로
    기존보다 좀더 이해가 되긴 하는데 아직 익숙치 않네요 ㅜㅜ 이부분이 중요한것 같아 다시 봅니다.
    감사합니다.
  30. 악어
    2020.03.01 완료
  31. riversik
    2020.02.21
    완료
  32. 도전차차차
    2019.10.29
  33. 가재준
    완료
  34. Perpect
    self = 인스턴스다. 라는게 잘 이해가 안가서 여러가지 찾아봤습니다. 다른 분들도 참고하시면 좋을 것같아요.

    c2 = Cal(30,20)라는 코드를 예로 들면,

    v1 <= 30

    v2 <= 20

    self <= c2(인스턴스화된 객체,인스턴스) 입니다. (이것의 의미가 self = 인스턴스 라는 뜻)


    또한, self.v1 = v1 이라는 코드가 있으면, 기존의 생성자함수(__init__)에서만 접근할 수 있었던 v1= 30이라는 값이 self.v1= 30 (= v1) 으로 기억되어, 다른 메소드 ( add, subtract)에서도 접근(사용)이 가능해집니다. (루비에서 @v1 처럼)


    원리가 궁금하다 혹은 왜그럴까 라는 궁금증이 생기실 수도 있는데, 사람들끼리 만든 규칙이라 그렇다. 이정도로 생각하고 넘어가시면 될 것 같습니다.



    '클래스 외부에서 객체를 인스턴스화하여 특정한 변수에 담으면 그 변수를 통해 해당 객체에 있는 프로퍼티나 메소드에 접근할 수 있게 됩니다.'
    [본 게시글의 댓글중 '코딩잘하고싶다ㅎ'님의 댓글]

    이 댓글과 같은 규칙입니다. 좀더 쉽게 설명해보면,


    -> c2= Cal(30,20)이라는 코드를 통해 c2라는 객체를 인스턴스(class가 Cal인 인스턴스)화 하였고

    self.v1 =v1이라는 코드를 통해 v1이라는 변수를 담으면, 해당 객체(c2라는 인스턴스 , class가 Cal)에 있는 프로미터나 메소드( add, subtact)에 접근할수 있다. 라는 규칙인 것 같습니다.
  35. FIRE
    20190820 완료
  36. 허니비
    190807
  37. Ray Kim
    후하후하후하... 넘 어렵다.. 복습 해야겠네요!
  38. Sunday
    감사합니다
  39. 김민수
    전역 변수 = 인스턴스 변수
    클래스내에 존재하는 모든 메소드에 적용되는 변수를 인스턴스 변수라 함
    루비에서는 인스턴스 변수 선언을 @로 선언함
    즉 클래스 "외부"의 인스턴스 구문에 존재하는 매개변수가 실행될때 클래스의 생성자메소드에 매개변수 값이 저장되고
    파이썬의 self는 매개변수를 생성자메소드 이외의 메소드에서 사용할 수 있도록 값의 소속을 해당 객체로 바꿔주는 역할을 함. self.v1은 생성자가 전달받은 v1이란 값을 인스턴스 변수로 할당해주는것. Self는 인스턴스 변수를 정의할 때 사용하는 매개변수라는 것
  40. 얼그레이
    190604 파이썬에서 인스턴스의 메소드를 만들 때 자기 자신을 호출(?)하는 매개변수를 맨 처음 지정해줘야 한다는 부분이 조금 헷갈리네요... 앞으로 강의를 더 들으며 이해하도록 노력해야겠어요 감사합니다!
  41. Hotak Choi
    190420
  42. gogo
    190417 1500
    완료입니다. 감사합니다.
  43. 19.04.14 완료
  44. 궁금이
    class cal(object):
    def __init__(self,v1,v2):
    self.v1=v1
    self.v2=v2

    def add(self):
    return self.v1+self.v2

    def substract(a): #self 대신 a 사용
    return a.v1-a.v2

    c1=cal(10,10)
    print(c1.add())
    print(c1.substract())

    이렇게 해도 되네요???
    substract 메소드에서 self.를 안써서 에러가 날 줄 알았거든요
  45. huyk
    190404 완료! 감사합니다
  46. 김정석
    좋습니다. ^^*!
  47. kmw8462
    감사합니다.
  48. sonypark
    이고잉님 덕분에 인스턴스 변수에 대해 확실히 이해하게 되었습니다. 감사합니다!!
  49. yareuk
    2018-12-21
  50. hellomorning
    완료~!