Instance를 보통 객체라고 한다.
객체 지향 프로그래밍에서는 함수대신 method(행위)라는 말을 사용
변수 -> 속성, 상태 라고도 말한다.
객체사용
<ruby>
계산기(calculate)의 기능을하는 Cal이라는 이름의 class를 만들고자 한다.
c1 = Cal.new(10,10)
Cal이라는 class를 복제한 instance를 생성함 그 값을 c1라는 변수에 담아둔다.
연산을 할 대상을 괄호 안에 넣는다.
p c1.add() # = p(c1.add())
p c1.subtract()
instance에 저장되어있는 (10,10)의 값을 더하거나 뺀 결과물을 얻기 위해서
instance 안에있는 method를 실행시킨다 -> c1.add() , c2.subtract()
여기서 puts()이 아닌 p()를 사용하였다. -> puts보다 더 상세한 값을 얻을 수 있고 더욱 간편하게 사용할 수 있기 때문
루비에서 함수의 ()는 생략 가능하기 때문에 p(c1.add()) = p c1.add 와 같이 간편하게 표현 가능하다.
<python>
python도 Cal이라는 이름의 class를 만들려고 한다.
c1 = Cal(10,10)
print(c1.add())
print(c1.subtract())
ruby에서 만든 것과 기능은 같지만 형태는 조금 다른 형태를 가지고 있다.
각각의 instance는 서로 다른 상태를 가지고 있기 때문에 같은 함수(행위)를 하더라도 그 것에 대한 결과값은 달라진다.
<class 생성>
<ruby>
class Cal
#생성자, constructor
def initialize(v1, v2)
@v1 = v1 # @변수 => 인스턴스 변수 -> instance가 속해있는 모든 method에서 사용가능
@v2 = v2
end
end
class를 생성할 때 클레스 명의 첫 번째 글자는 대문자로 되야한다.
<python>
class Cal(object):
def __init__(self, v1, v2):
self.v1 = v1
self.v2 = v2
생성자 생성
생성자를 생성한다.
Cal이라는 method를 이용해서 새로운 instance를 만들었고 ( c1 = Cal.new()) 그 생성되는 과정에서 두개의 입력값이 instance의 데이터로 설정이 된다 (10, 10)
class로 부터 nstance 가 만들어질 때 자동적으로 실행되도록 약속되어 있는 method를 생성자(constructor)라고 한다.
instance를 생성할 때 가장먼저 생성자가 자동으로 실행되게 되어있다.
instance가 생성 될 때 꼭 처리되어야 하는 과정을 이 안에 넣으면 된다. ( 초기화 작업 )
<ruby>
def initialize(v1, v2)
@v1 = v1 # @변수 => 인스턴스 변수 -> instance가 속해있는 모든 method에서 사용가능
@v2 = v2
end
instance를 생성할 때 가장먼저 initialize() 가 자동으로 실행되게 되어있다.
instance가 생성 될 때 꼭 처리되어야 하는 과정을 이 안에 넣으면 된다. ( 초기화 작업 )
<python>
def __init__(self, v1, v2):
self.v1 = v1
self.v2 = v2
instance 변수
생성자 안에서 만들어진 변수는 다른 method안에서는 사용이 불가능합니다. (지역번수이기 때문에)
각각의 언어의 맞춰서 instance 변수로 만들어줘야 instance가 속한 모든 method안에서 사용가능하다.
<ruby>
def initialize(v1, v2)
@v1 = v1 # @변수 => 인스턴스 변수 -> instance가 속해있는 모든 method에서 사용가능
@v2 = v2
end
def add()
return @v1+@v2
end
@변수명 으로 간단하게 instance 변수로 만드는 것이 가능하다.
<python>
def __init__(self, v1, v2):
self.v1 = v1
self.v2 = v2
def add(self):
return self.v1+self.v2
self가 instance를 의미합니다. python에 있는 method들은 첫 번째 매개변수를 꼭 정의해야한다.
그 첫번째 매개변수는 그 instance를 가르키는 값이 첫 번째 매개변수의 값으로 들어오게 된다.
그래서 self.변수명 으로 해주면 instance 변수를 만들 수 있다.
'IT 공부 > python' 카테고리의 다른 글
2020-10-08 Python 과 Ruby 객체 지향 프로그래밍(4) (0) | 2020.10.08 |
---|---|
2020-10-07 Python 과 Ruby 객체 지향 프로그래밍(3) (0) | 2020.10.07 |
2020-10-06 Python 과 Ruby 객체 지향 프로그래밍 (0) | 2020.10.06 |
2020-10-05 Python 과 Ruby(2) (0) | 2020.10.05 |
2020-10-05 Python 과 ruby (0) | 2020.10.05 |