안녕하세요, AstroPenguin입니다!
2탄인 텍스트(.txt) 형식으로 된 WMAP데이터를 통하여 CMB의 Angular Power Spectrum 그래프를 그려낸 게시물로 먼저 찾아뵙고, 순서를 바꾸어 python으로 class구문을 작성하는 기초에 대한 게시물로 찾아뵙게 되었습니다.
https://himbopsa.tistory.com/49
이 게시물을 참고하여 2탄을 이해하시고 실습해보시면 될 것 같습니다.
그럼 지금부터 시작하겠습니다~
class 구문이란, 한 구문 안에 여러개의 함수를 포함시켜서 여러 함수에 대한 기능을 복합적으로 사용할 수 있도록 하는 구문입니다. 예를 들어 한 class 구문 안에서 덧셈, 뺄셈, 곱셈, 나눗셈을 하게끔 만들 수 있습니다. 이를 간단하게 코드로 만들어보았습니다.
class four_fundamental_arithmetic_operation():
def __init__(self, num1, num2):
self.number1 = num1
self.number2 = num2
def add(self):
return self.number1 + self.number2
def subtract(self):
return self.number1 - self.number2
def multiply(self):
return self.number1 * self.number2
def devide(self):
if self.number2 == 0:
value = "number can't be devided by zero"
else:
value = self.number1 / self.number2
return value
calculate_4 = four_fundamental_arithmetic_operation(10,5)
print(calculate_4.add())
print(calculate_4.subtract())
print(calculate_4.multiply())
print(calculate_4.devide())
우선 class의 이름을 정해주고 __init__(self,...)의 과정을 거쳐 class구문 안에서 사용한 변수들에 대하여 정의해줍니다.
이 때 해당 변수들 앞에는 무조건 self가 들어가야 합니다.
self가 들어가야 하는 이유 : calculate_4 = four_fundamental_arithmetic_operation(10,5)구문에서 각각의 add, subtract, multiply, devide 함수를 사용할 때 calculate_4안에 있는 내용들을 토대로 사용하여야 합니다. 자기 자신이 선언 및 호출, 사용되기에 자기 자신을 __init__안에 변수로 받아야 합니다. (그렇기에 관례적으로 self를 사용한다)
class 클래스명():
def __init__(self, 입력값1, 입력값2....):
self.정보1 = 입력값1 (numpy를 활용하거나 다른 숫자들과의 연산 또는 기타 과정으로 가공 가능)
self.정보2 = 입력값2
이후에는 위의 코드와 같이 원하는 함수들을 정의하고 구축해주면 됩니다. 이 때 주의하여야 할 점은 __init__에서 선언해준 변수들에 대해서는 self.정보1와 같은 형식으로 사용해주어야합니다. 그렇지 않으면 에러가 발생하거나 정보를 올바르게 인식할 수 없습니다. 클래스 내부에 함수를 전부 작성 하였으면 calculate_4 = four_fundamental_arithmetic_operation(10,5)와 같이 사용하고자 하는 클래스와 그 안에 들어갈 변수를 정의해줍니다. 그 후 클래스명.함수명(변수들)을 원하는 순서대로 입력해주어 클래스 내에서 원하는 과정을 거치시면 됩니다.
그러면 출력값은 저희가 암산으로 계산한 것과 같은 값이 나오게 됩니다.
여기까지가 class 구문에 대한 간단한 설명이었습니다.
이 게시물을 참고하시여 앞서 찾아뵙게 된 [Python(파이썬) 텍스트(.txt) 형식 천문학 데이터 다루기] Class 문을 활용하여 텍스트 형식의 WMAP 데이터 다루기 (천문학 데이터 분석 입문)-2 게시물을 이해하시고 실습을 해보시면 좋을 것 같습니다. 그러면 3탄에서는 2탄의 아쉬운 점을 극복하는 과정과 그래프에 대한 간단한 설명으로 찾아뵙도록 하겠습니다.
감사합니다!