파이썬의 클래스에는 함수도 들어갈 수 있다. 하지만 클래스 안에 있는 함수를 보통 함수처럼 쓰면 문제가 발생할 수 있다. 그러므로 클래스 함수를 다루는 법을 알아야 한다.
class Myclass():
a = 1
for i in range(10):
a += 1
def number(self, n, m):
return n + m
함수가 포함된 클래스의 예시이다. 여기에서 2, 3, 4번째 줄의 코드는 클래스의 인스턴스를 정한 뒤 실행시키면 된다.
x = Myclass()
print(x.a)
실행 결과는 11이 나온다. 함수도 이와 같이 실행할 수 있다. 하지만 클래스 함수에는 일반 함수와 다른 점이 하나 있다. 바로 5번째 줄에 있는 self다.
이 self는 함수에 이용할 인스턴스를 정해준다. 이는 필요한 인스턴스를 때에 맞춰서 사용할 수 있게 만들어 코딩을 하는데 도움이 된다. 예를 들어 인스턴스들의 값이나 실행 결과가 서로 다를 때 self를 이용할 수 있다.
class Myclass():
a = 1
for i in range(10):
a += 1
def number(self, n, m):
return self.a + n + m
x = Myclass()
y = Myclass()
x.a = 2
y.a = 3
print(x.number(5, 8))
print(y.number(5, 8))
이 예시의 경우에는 x 인스턴스의 a 값은 2이고 y 인스턴스의 a 값은 3이다. 6번째 줄에 self를 써서 둘을 구분해주었다. 만약에 self가 아닌 x가 들어갔다면 12번째 줄의 실행 결과가 11번째 줄의 실행결과와 같을 것이다.
print(Myclass.number(x, 5, 8))
print(Myclass.number(y, 5, 8))
이 경우는 위의 코드와는 다르게 사용할 인스턴스를 직접 적어주어야 한다. 실행 결과는 위의 코드와 같다. 다만 여기서는 좀 더 수동적인 방식으로 인스턴스와 self를 활용했다.
이렇게 self를 잘 활용하면 클래스 함수를 더 쉽게 쓸 수 있다.
'코딩' 카테고리의 다른 글
기온데이터를 이용한 파이썬 (0) | 2021.01.10 |
---|---|
파이썬의 클래스 & 연산자 add [파이썬 3.7] (0) | 2020.09.05 |
[파이썬 3.7] 함수의 응용 (0) | 2020.08.10 |
파이썬의 클래스(class) [파이썬 3.7] (0) | 2020.08.01 |
파이썬의 함수와 모듈 [파이썬 3.7] (0) | 2020.07.18 |