클래스

매일 공부(ML)·2021년 11월 8일
0

Python

목록 보기
4/38

클래스

  • 코드의 길이를 줄여준다.

클래스와 객체

  • 클래스: 똑같은 무엇인가를 계속해서 만들어낼 수 있는 도면

  • 객체: 클래스로 만든 피조물이므로 고유성과 독립성이 있다.

class Cookie:
	pass #아무 기능을 갖지 않는 껍데기로 보이지만 사실 객체 생성 기능이 있다.
    
a = Cookie()
b = Cookie()

# Cookie의  결과값을 돌려받은 a와b가 객체이고 이는 마치 함수를 사용하여 결과값을 돌려받는 것과 같다
  • 인스턴스: 관계성을 알려줄 때 주로 쓴다. 특정 객체가 어떤 클래스의 객체인지 설명해줌

사칙연산 클래스 구조 만들기

class FourCal:
	pass # 임시로 코드 작성할 때 주로 사용한다.
    
a = FourCal()
type(a) # <class '_main_.FourCal'>
   

객체에 숫자 지정할 수 있게 만들기

  • 메서드: 클래스 안에 구현되는 함수/ 클래스에 포함되어 있다는 점만 제외하면 일반 함수와 다를 것 없다.

  • 도트(.): 객체를 통해 클래스의 메서드 호출

*일반적인 함수 만들기


def 함수명(매개변수):
	수행할 문장
    
a.setdata(4,2) # 숫자값 설정

class FourCal:
	def setdata(self, first, second): #메서드의 매개변수, 입력값
    	self.first = first # 4로 지정 , 메서드의 수행문
        self.second = second # 2로 지정, 메서드의 수행문
  • setdata 메서드의 매개변수

    i) self, first, second 3개 입력값

    ii) self는 특별한 의미를 갖는다.

    --> setdata메서드를 호출한 객체 a가 자동 전달

  • setdata 메서드의 수행문

a = FourCal()
a.setdata(4, 2)
print(a.first) #4
print(a.second) #2
  • id함수: 객체의 주소를 돌려주는 파이썬 내장 함수
a = FourCal()
b = FourCal()
a.setdata(4, 2)
b.setdata(3, 7)
id(a.first)   # a의 first 주소값을 확인= 1839194944
id(b.first)   # b의 first 주소값을 확인 = 1839194928
  • 완성된 클래스

class FourCal:
	def setdata(self, first, second):
    	self.first = first
        self.second = second
  • 더하기 기능 추가
class FourCal:
    def setdata(self, first, second):
        self.first = first
        self.second = second
    def add(self):
        result = self.first + self.second
        return result

a = FourCal()
a.setdata(4,2)
print(a.add()) # 6
  • 곱하기,빼기,나누기 기능 만들기
class FourCal:
    def setdata(self, first, second):
        self.first = first
        self.second = second
    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()
b = FourCal()

a.setdata(4,2)
b.setdata(3,8)

a.add() #6
a.mul() #8
a.sub() #2
a.div() #2
b.add() #11
b.mul() #24
b.sub() #-5
b.div() #0.375

생성자(Constructor)

  • 정의: 객체가 생성될 때 자동으로 호출되는 메서드

  • 특징: 객체에 초기값 설정할 때 필요, 해당되는 값 전달하여 객체 생성

  • 예시: init

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 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.first) # 4
print(a.second) # 2

클래스의 상속

  • 정의: 다른 클래스의 기능을 물려받는다.

  • 특징: 기존 클래스를 변경하지 않고 기능추가 혹은 기존 가능 변경 때 사용

  • class 클래스 이름(상속할 클래스 이름)

class MoreFourCal(FourCal):
    pass
    
a = MoreFourCal(4,2)
a.add() # 6
a.mul() # 8
a.sub() # 2
a.div() # 2
  • a의 b제곱을 계산
class MoreFourCal(FourCal):
    def pow(self):
        result = self.first ** self.second
        return result
 
a = MoreFourCal(4,2)
a.pow() # 16

메서드 오버라이딩

  • 정의: 부모 클래스에 있는 메서드를 동일한 이름으로 다시 만드는 것
class SafeFourCal(FourCal):
    def div(self):
        if self.second == 0:  # 나누는 값이 0인 경우 0을 리턴하도록 수정
            return 0
        else:
            return self.first / self.second
            
            
a = SafeFourCal(4, 0)
a.div() # 0

클래스 변수

  • 정의: 클래스 안에 변수를 선언하여 생성

  • 모양: 클래스이름.클래스변수

  • 특징: 클래스로 만든 객체를 통해서 클래스 변수로 사용 가능 / 값이 변하면 다같이 변함(공유성)

class Family:
    lastname = "김"
    
print(Family.lastname) # 김

a = Family()
b = Family()
print(a.lastname) # 김
print(b.lastname) # 김

Family.lastname = "박"

print(a.lastname) # 박
print(b.lastname) # 박
profile
성장을 도울 아카이빙 블로그

0개의 댓글