𝑎𝑏��를 계산하는 MoreFourCal 클래스 만들기
함수로 계산기 만들기
result1 = 0
result2 = 0
def add1(num): #계산기 1
global result1 #global로 전역변수로 만듦
result1 += num
return result1
def add2(num): #계산기 2
global result2 #global로 전역변수로 만듦
result2 += num
return result2
print(add1(4))
print(add1(4))
7
8
print(add2(8))
12
클래스로 만들어주기
# 클래스로 계산기 만들기
class Calculatior:
def __init__(self):
self.result = 0
def add(self,num):
self.result += num
return self.result
cal1 = Calculatior()
cal1.add(2)
2
cal1.add(3)
5
cal2 = Calculatior()
cal2.add(1)
1
cal1.add(4)
9 #cal1이 5이니까
class SoccerPlayer(object):
def change_back_number(self,new_number):
print('선수의 등번호를 변경한다: from %d to %d"%(self.back_number,new_number)
self.back_number = new_number
클래스 내에서의 함수도 기존 함수와 크게 다르지 않다. 함수의 이름을 쓰고 매개변수를 사용하면 된다. 여기서 가장 큰 차이점은 바로 self를 매개변수에 반드시 넣어야 한다는 것이다. self가 있어야만 실제로 인스턴스가 사용할 수 있는 함수로 선언된다.
def setdata(self,frist,second): #메서드의 매개변수
___ self.first = first # 메서드의 수행문
___ self.seconde = second # 메서드의 수행문
class FourCal:
def setdata(self,first,second):
self.first = first
self.second = second
print(self.first,self.second )
def add(self):
result = self.first + self.second
return result
def sub(self):
result = self.first - self.second
return result
def mul(self):
result = self.first - self.second
return result
def div(self):
result = self.first / self.second
return result
시작값을 setdata 함수 안에 넣어주며 first,second의 기본값을 넣어주면
하위 값인 나머지 add,sub,mul,div들이 setdata안에 입력된 값을 더해주거나 빼주는 연산기능을 만들어준다.
class FourCal:
def __init__(self,first,second): # 생성자
self.first = first # self.first 인스턴스 변수
self.second = second #self.second 인스턴스 변수
# def setdata(self,first,second): # 인스턴스 변수
# self.first = first
# self.second = second
# print(self.first,self.second )
def add(self):
result = self.first + self.second
return result
def sub(self):
result = self.first - self.second
return result
def mul(self):
result = self.first * self.second
return result
def div(self):
result = self.first / self.second
return result
a = FourCal(2,3)
# 미리 값을 지정해줄 수 있다
class MoreFourCal(FourCal): # FourCal을 상속
def pow(self):
result = self.first ** self.second
return result
class Family:
lastname = '김'
Family.lastname
김
b = Family()
a.lastname
b.lastname
a.lastname = '박' #수정이 가능하다 #클래스 변수가 아닌 , 객체 변수를 따로 생성한 것이다.
Family.lastname = '최'
b.lastname
'최'
__ (언더바 2개 )로 시작하면 비공개 속성이 된다.
class Knight:
lastname='김'
__item_limit = 10
def print_item_limit(self):
print(Knight.__item_limit)
x = Knight()
x.lastname
김
x.__item_limit()
# 접근 불가
# 비공개 클래스는 메서드를 직접 접촉해야한다