[Python] Class
클래스란 메서드와 멤버의 집합체를 말한다.
다른 언어를 배우게 된다면 위의 두 단어를 자주 접하게 되는데 메서드는 함수, 멤버는 변수로 이해하자
우리는 반복되는 코드를 보다 편리하게 이용하기 위해 함수를 사용했는데, 클래스는 그러한 함수의 집합이라는 말이다.
비유하자면 음료는 변수와 같은 자료, 함수는 자판기, 이 자판기를 만드는 공장이 클래스이다.
공장에서 제품을 생산할 때 매 번 같은 모양의 틀을 만들어 제품을 생산하지않듯이 클래스 역시 이미 만들어둔
메서드를 통해 값을 출력해내는데 이를 인스턴트(instance)라고 부른다.
class new_class:
def welcome():
print('hello')
a = new_class
a.welcome()
'hello'
먼저 클래스를 선언하고 이름을 지정한 후 클래스 내부에 메서드를 지정해준다,
이후 객체(멤버)에 클래스를 지정하여 사용하고자 하는 함수를 불러오는 형태로 사용된다.
굳이 클래스를 객체에 할당하지않고 클래스명. 함수명()으로 사용해도 실행에 지장은 없지만 사용의 편리성을 더하고자 한다면 객체를 지정하도록하자
constructor(생성자)
메서드의 종류 중 생성자라고 불리는 메서드가 있는데, 생성자는 객체가 실행될 때 자동으로 실행되는 메서드이다.
생성자임을 선언하는 방법은 def __init__(self, 매개변수, 매개변수,,,)의 형태로 선언하도록 지정되어있다.
생성자를 이용하여 메서드를 구성한다면, 관례적으로 self를 붙여 정의해준다.
class calcurator:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def add(self):
result = self.num1 + self.num2
return result
def sub(self):
result = self.num1 - self.num2
return result
def mul(self):
result = self.num1 * self.num2
return result
def div(self):
result = self.num1 / self.num2
return result
a = calcurator(20,7)
print(a.add())
print(a.sub())
print(a.mul())
print(a.div())
27
13
140
2.857142857142857
사칙 연산을 하는 계산기 클래스를 만들어보았다. 클래스를 선언한 후 __init__ 을 통해 메서드를 정의하고,
각각의 연산을 하는 함수를 만든 후 호출되었을 때 그 값을 반환하게끔 return 키워드를 넣어
함수를 끝냈고 객체에 클래스와 값을 지정하여 사용의 편의성을 높여준 후 필요한 함수를 불러와 값을 계산한 것이다.
클래스 상속
class calcurator:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def add(self):
result = self.num1 + self.num2
return result
def sub(self):
result = self.num1 - self.num2
return result
def mul(self):
result = self.num1 * self.num2
return result
def div(self):
result = self.num1 / self.num2
return result
class pow_calculator(calcurator):
def pow(self):
result = self.num1 ** self.num2
return result
a=pow_calculator(4,5)
print(a.pow())
print()
print(a.add())
print(a.sub())
print(a.mul())
print(a.div())
1024
9
-1
20
0.8
클래스에서 상속이란 부모 클래스와 자식 클래스로 나뉘게 된다.
쉽게 말해 자식 클래스의 매개변수로 부모 클래스가 들어오게 되면 부모 클래스의 모든 기능을 자식 클래스에서도
사용할 수 있게 된다. 하지만 그 반대인 부모 클래스에서 자식 클래스의 사용은 불가하다.
위의 예시를 살펴보면 알 수 있듯이 class pow_calculator(calculator)의 형태로 새로운 클래스에 기존 클래스를 덮어씌워
새롭게 추가한 메서드는 물론이고, 기존 클래스에 들어있던 메서드도 여전히 사용할 수 있었다.
추가로 만약 클래스 내부 함수에 변수를 넣는 게 아닌 함수 밖에 변수를 지정하게 된다면,
매개변수로 무슨 값이 들어오든 함수 밖의 값만이 출력된다.