-
[python] 클래스파이썬 2023. 8. 26. 20:50
클래스
클래스로 만든 객체는 인스턴스라고 부른다.
각 객체는 다른 객체와 서로 독립적인 값을 유지한다.
class FourCal: def setdata(self,first,second): #self에 a가 전달되었다면 self.first = first # a.first = 4 self.second = second #a.second = 2 a = FourCal() #a 객체만들기 a.setdata(4,2) #클래스 내 함수(메소드) 이용해서 호출
파이썬에서는 첫번째 매개변수 이름을 관례적으로 self를 사용한다.
setdata의 첫번째 매개변수 self에는 setdata메소드를 호출한 객체 a가 전달된다.
사칙연산 클래스만들기
class FourCal: def setdata(self,first,second): #self에 a가 전달되었다면 self.first = first # a.first = 4 self.second = second #a.second = 2 def add(self): result = self.first + self.second return result def mul(self): result = self.first * self.second return result def sub(self): result = self.first - self.second return result def div(self): result = self.first / self.second return result a = FourCal() #a 객체만들기 a.setdata(4,2) #클래스 내 함수(메소드) 이용해서 호출 print(a.add()) print(a.mul()) print(a.sub()) print(a.div())
생성자
- 생성자란 객체가 생성될 때 자동으로 호출되는 메소드를 의미한다.
- 메서드명으로 __init__을 사용하면 생성자가 된다.
- 위 예를 보면 setdata(4,2)를 하지 않고 add()를 하게 되면 first,second의 초깃값이 설정되어있지 않아 오류가 발생하는데, 매번 setdata()를 호출하기엔 번거롭다. 그래서 보통 변수를 처음에 초기화하고 그 과정을 간소화하기 위해 사용한다.
class FourCal: def __init__(self,first,second): self.first = first self.second = second def setdata(self,first,second): #self에 a가 전달되었다면 self.first = first # a.first = 4 self.second = second #a.second = 2 def add(self): result = self.first + self.second return result def mul(self): result = self.first * self.second return result def sub(self): result = self.first - self.second return result def div(self): result = self.first / self.second return result a = FourCal(4,2) print(a.add()) print(a.mul()) print(a.sub()) print(a.div())
클래스 상속
어떤 클래스를 만들때 다른 클래스의 기능을 물려받을 수 있게 만드는 것
상속은 기존 클래스를 변경하지 않고, 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용한다.
class 클래스이름(상속할 클래스 이름)
class FourCal: def __init__(self,first,second): self.first = first self.second = second def setdata(self,first,second): #self에 a가 전달되었다면 self.first = first # a.first = 4 self.second = second #a.second = 2 def add(self): result = self.first + self.second return result def mul(self): result = self.first * self.second return result def sub(self): result = self.first - self.second return result def div(self): result = self.first / self.second return result class MoreFourCal(FourCal): #MoreFourCal클래스는 FourCal클래스를 상속하였으므로 FourCal클래스의 모든 기능을 사용할 수 있다. def pow(self): result = self.first ** self.second # a^b return result a = MoreFourCal(4,2) print(a.add()) print(a.mul()) print(a.sub()) print(a.div())
메소드 오버라이딩
부모 클래스에 있는 메소드를 동일한 이름으로 자식클래스에 선언하는 것을 메소드 오버라이딩이라고한다.
메소드 오버라이딩하면 부모 클래스의 메소드 대신 오버라이딩한 자식 클래스의 메소드가 호출된다.
class FourCal: def __init__(self,first,second): self.first = first self.second = second def setdata(self,first,second): #self에 a가 전달되었다면 self.first = first # a.first = 4 self.second = second #a.second = 2 def add(self): result = self.first + self.second return result def mul(self): result = self.first * self.second return result def sub(self): result = self.first - self.second return result def div(self): result = self.first / self.second return result class MoreFourCal(FourCal): #MoreFourCal클래스는 FourCal클래스를 상속하였으므로 FourCal클래스의 모든 기능을 사용할 수 있다. def pow(self): result = self.first ** self.second # a^b return result class SafeFourCal(FourCal): def div(self): #메소드 오버라이딩 if self.second == 0: #나누는 값이 0인경우 0을 리턴한다. return 0 else: return self.first/self.second a = MoreFourCal(4,2) print(a.pow())
클래스변수
- 클래스 변수는 클래스 안에 선언하는 변수이다.
- 클래스이름.클래스변수 로 사용할 수 있다.
- 클래스로 만든 모든 객체에 공유되는 특징이 있다.
class Family: lastname = "김" a = Family() b = Family() print(a.lastname) print(b.lastname)
'파이썬' 카테고리의 다른 글
[python] list, tuple, dict, set 총 정리 (0) 2024.01.16 [python] 모듈, 패키지 (0) 2023.08.26 [python] 입출력 (0) 2023.08.21 [python] 함수 (0) 2023.08.21 [python] 제어문 (0) 2023.08.20