01. class
class
- 객체를 만들기 위한 하나의 틀 입니다.
- 속성(변수) 과 기능(메서드)로 이루어져 있습니다.
- self 가 붙은 변수를 멤버변수라고 합니다.
class 클래스 명 :
변수 :
메서드 :
class Calculator:
def setting(self, color, n1, n2):
self.color = color
self.n1 = n1
self.n2 = n2
def add(self):
result = self.n1 + self.n2
return result
객체 생성
- 변수 = 클래스명()
- 멤버 변수 사용 -> 객체변수명.멤버변수명
- 메서드 사용 => 객체변수명.메서드명
calcA = Calculator() # 계산기 객체 생성
calcB = Calculator()
calcA.setting('일반계산기', 15, 5)
print(calcA.add())
print()

calcB.setting('공학용 계산기', 5, 7)
print(calcB.add())
print()

print(id(calcA))
print(id(calcB))

생성자
- 생성자는 객체가 생성될 때 클래스의 멤버변수를 초기화하거나,
객체 생성과 동시에 해야할 작업을 기술하는데 사용합니다.
- 파이썬에서는 클래스 내부의 메서드 이름을
__init__ 로 작성하면,
해당 메서드를 자동으로 생성자로 취급합니다.
class Account:
def __init__(self, balance):
self.balance = balance
def deposit(self, money):
self.balance += money
def inquire(self):
print(f"잔액 : {self.balance}")
bankBookA = Account(10000)
bankBookA.deposit(3000)
bankBookA.inquire()

액세서
- 파이썬 클래스의 멤버는 모두 공개되어 누구나 외부에서 접근가능합니다.
- public(공개)
- protected(보호)
- 동일한 클래스나 상속받은 클래스에서 접근 가능합니다
_(밑줄) 로 시작하는 이름
- private(개인)
- 해당 클래스에서만 접근이 가능합니다.
__(밑줄 두개) 로 시작하는 이름
class Date:
def __init__(self, month):
self.__month = month
def getMonth(self):
return self.__month
def setMonth(self, month):
if 1 <= month <= 12:
self.__month = month
month = property(getMonth, setMonth) # property 함수를 사용해서 month 속성 정의
today = Date(1)
# print(today.__month) Error
print(today.getMonth())
print(today.month) # getMonth()
today.month = 10 # setMonth(10)
print(today.month)
print()

부모 클래스 ( Parent class, Super class )
자식 클래스 ( Child class, Sub class )
상속
- 파이썬의 상속 표현은 클래스 이름 뒤에 물려받을 부모클래스 이름을 작성합니다.
super() 메서드
- 자식 클래스에서 부모 클래스의 메서드 호출시 사용
# 부모 클래스
class Person:
def __init__(self, name="none", age=0):
self.name = name
self.age = age
def info(self):
print(f"{self.name} - 나이 : {self.age}")
# 자식 클래스
class Student(Person):
def __init__(self, name="none", age=0, stuNum=0):
super().__init__(name,age)
self.stuNum = stuNum
def stuInfo(self):
print("--- 학생정보 ---")
print(f"학번 : {self.stuNum}")
print(f"이름 : {self.name}")
print(f"나이 : {self.age}")
# 활용
stuA = Student("stuA", 20, "20040125")
stuA.stuInfo()
