05 Python class - (1) class

처어리·2024년 1월 25일

python

목록 보기
34/36
post-thumbnail

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()

0개의 댓글