👩‍💻LEARN : ML&Data/Code

[Basic Python] 클래스 (Class)

쟈니유 2023. 3. 30. 20:30
728x90

업무에 필요한건 판다스까지라며 자료구조 알고리즘 등한시한 과거의 나야 반성해라


※ 점프투 파이썬, 프로그래머스 파이썬 무료 강의 등을 통해 정리한 내용입니다. 

 

점프투 파이썬

프로그래머스 파이썬 강의 

 

인스턴스와 클래스 

클래스

  • 함수, 변수 등을 모아두는 집합체 
  • e.g. 쿠키틀

인스턴스 

  • 클래스로 인해 생성된 객체들
  • 인스턴스는 각각의 값을 갖고 있다
    • 같은 값을 가진 instance1, instance2가 있을 때 
      • 같은 같지만 instance1 == instance2
      • 본질이 같진 않다 instance1 is not instance2
  • e.g. 각각의 쿠키

 

클래스

클래스 만들기 

  • 클래스 안에 변수, 함수(메서드) 모두 넣을 수 있다
#클래스 선언하기

class Human():


#클래스에 해당하는 인스턴스 설정

person1 = Human()
person2 = Human()

#인스턴스에 값 넣기 

person1.name = '곽팔두'
person1.language = '한글'

 

모델링

#1. 클래스 생성

class Human():

#2. 클래스에 함수 넣어주기 

def create_human(name,weight):
	person = Human()
    person.name = name
    person.weight = weight
    return person
    
Human.create = create_human #Human 클래스에서 .create -> 함수 create_human을 의미한다 

def eat(person):
	person.weight += 0.1
    print("{}이가 먹어서 {}kg이 되었다".format{person.name,person.weight})
    
def walk(person):
	person.weight += 0.1
    print("{}이가 걸어서 {}kg이 되었다".format{person.name,person.weight})
    
Human.eat = eat  #eat,walk 함수를 Human()에 넣어줌 
Human.walk = walk 

#3.클래스 사용하기 
person.create_human("두팔",60)

person.eat()
person.eat()
person.walk()

 

 

메소드

#1. 클래스 생성

class Human():

	#2. 클래스에 바로 슉 함수(메소드) 넣어주기 
    	#메소드의 첫번째 인자는 self라고 정의한다. 
        #메소드 호출 시 인자는 생략해도 괜찮다 

    def create(name,weight):  #뒤에 초기화 함수 할 때 다시 사용할 예정이라 self 수정 X 
        person = Human()
        person.name = name
        person.weight = weight
        return person
    
    def eat(self):
        self.weight += 0.1
        print("{}이가 먹어서 {}kg이 되었다".format{self.name,self.weight})

    def walk(self):
        self.weight += 0.1
        print("{}이가 걸어서 {}kg이 되었다".format{self.name,self.weight})
    
    def speak(self, message):
    	print(message)
    


#3.클래스 사용하기 
person.create("두팔",60)

person.eat()   #self인자를 넣어주지 않아도 알아서 self 호출 
person.speak("하이하이") #self인자를 넣어주지 않아도 알아서 self 호출, 두번째 인자만 프린트함
#>>하이하이로  출력 
person.walk()

 

특수한 메소드 

  • __init__ 
    • class가 시작될때 자동으로 시행되는 초기화 함수 
  • __str__
    • 문자열로 만들어줌
class Human( ):
    '''인간'''
    def __init__( self, name, weight ):   #초기화 함수에 인자 넣어서도 사용 가능 
        '''초기화 함수'''
        self.name = name
        self.weight = weight

    def __str__( self )
        '''문자열화 함수'''
        return "{} ( 몸무게 {}kg )".format( self.name, self.weight )

person = Human( "사람", 60.5 ) # 초기화 함수 사용
print( person ) # 문자열화 함수 사용

 

#점프투파이썬 계산기 만들어보기 

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

#상속하여 제곱 계산식 만들기 
class MoreFourcal(Fourcal):
  def pow(self):
    result = self.first ** self.second
    return result 
    
#오버라이딩 하여 0으로 나눌 경우 0 리턴하게 만들기 
class SafeFourcal(Fourcal):
  def div(self):
    if self.second == 0:
      return 0
    else :
      return self.first / self.second