반응형
Preface
음... 굉장히 오랜만에 글을 업로드하는 것 같다.
지난 주는 이번 주 개강에 앞서 그간 쌓인 스트레스와 피로를 풀기 위해 제주도로 4박 5일 여행을 다녀왔다.
공부는 잠시 뒤로하고 친한 친구들과 탁 트인 바다를 바라보며 이런 저런 이야기들을 주고받자 마음이 한층 편안해졌다.
집에 있을 땐 몰랐지만, 타지에서 곰곰이 생각해보니 내가 그동안 너무 조급했던 것 같다는 생각이 들었다. 여태껏 진도를 나가기에 급급하여 업로드한 후 제대로 복습 한 번 하지 않은 글들을 보며 서두르지 말고 기본부터 차근차근 쌓아 올리자는 생각을 다시 한 번 마음에 새길 수 있었다.
여행을 마친 후에는 집에 돌아와 방 정리를 했다.
필요없는 물건들을 모두 버린 후 새 가구들을 들여놓았더니 방이 생각보다 훨씬 깔끔해져 공부에 더욱 집중할 수 있는 분위기가 된 것 같다.
오늘부터는 학교 수업과 코딩 공부를 병행해야 하기 때문에 지난 두 달 간 했던 것 만큼의 공부는 할 수 없을 지도 모르지만, 조금씩 꾸준히 공부하다 보면 분명 노력의 결실을 맺을 수 있을 것이라 생각한다.
1. 전역 변수를 사용한 계산
result1 = 0
result2 = 0
def add1(num): # 이전의 값을 메모리에 저장하는 함수
global result1
result1 += num
return result1
def add2(num):
global result2
result2 += num
return result2
print(add1(3))
print(add1(4))
print(add2(4))
print(add2(5))
2. 클래스 만들기
class FourCal:
pass
# pass는 아무것도 수행하지 않는 문법으로 임시로 코드를 작성할 때 주로 사용한다.
a = FourCal()
print(type(a))
# type 함수는 파이썬이 자체로 가지고 있는 내장 함수로 객체 타입을 출력한다.
3. 메서드 호출하기
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
a = FourCal()
a.setdata(4, 2)
# setdata 메서드의 첫 번째 매개변수 self에는 setdata메서드를 호출한 객체 a가 자동으로 전달된다.
# 객체를 호출할 때 호출한 객체 자신이 전달되기 때문에
# 파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용한다.
FourCal.setdata(a, 4, 2)
# 클래스 이름.메서드 형태로 호출할 때는 객체 a를 첫 번째 매개변수 self에 전달해 주어야 한다.
4. 객체 변수
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
a = FourCal()
b = FourCal()
a.setdata(4, 2)
b.setdata(3, 7)
print(id(a.first)) # 객체의 주소를 돌려주는 파이썬 내장 함수
print(id(b.first))
# 객체 변수는 다른 객체들 영향받지 않고 독립적으로 그 값을 유지한다
5. 사칙연산 클래스 만들기
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = 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()
a.setdata(4, 2)
print(a.add())
print(a.sub())
print(a.mul())
print(a.div())
6. 클래스 상속 1
class FourCal:
def __init__(self, first, second):
self.first = first
self.second = second
# 생성자(Constructor)란 객체가 생성될 때 자동으로 호출되는 메서드이다.
def setdata(self, first, second):
self.first = first
self.second = 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(4, 2)
print(a.add())
# __init__ 메서드도 다른 메서드와 마찬가지로 첫 번째 매개변수 self에 생성되는 객체가 자동으로 전달된다.
class MoreFourCal(FourCal): # 클래스 이름 뒤 괄호 안에 상속할 클래스 이름을 넣어주면 클래스가 상속된다.
pass
b = MoreFourCal(4, 2)
print(b.add())
print(b.sub())
# 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황일 때 상속을 사용한다.
7. 클래스 상속 2
class FourCal:
def __init__(self, first, second):
self.first = first
self.second = second
def setdata(self, first, second):
self.first = first
self.second = 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
class MoreFourCal(FourCal):
def pow(self): # a의 b제곱을 구하는 함수
result = self.first ** self.second
return result
a = MoreFourCal(4, 2)
print(a.pow())
8. 오버라이딩
class FourCal:
def __init__(self, first, second):
self.first = first
self.second = second
def setdata(self, first, second):
self.first = first
self.second = 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
class SafeFourCal(FourCal):
def div(self):
if self.second == 0:
return 0
else:
return self.first / self.second
# 오버라이딩(Overriding) : 부모 클래스(상속한 클래스)에 있는 메서드를 동일한 이름으로 다시 만드는 것
# 메서드를 오버라이딩하면 부모클래스의 메서드 대신 오버라이딩한 메서드가 호출된다.
a = SafeFourCal(4, 0)
print(a.div())
9. 클래스 변수
class Family:
lastname = '김'
print(Family.lastname)
a = Family()
print(a.lastname)
# 클래스 변수는 클래스로 만든 모든 객체에 공유된다.
728x90
반응형
댓글