본문 바로가기
프로그래밍언어/python

[파이썬]class 정리 (상속, 다중상속)+pass, super 사용법

by 연어바케트 2021. 2. 5.
반응형

 

○ 상속

  • 물려주는 클래스 
  • 부모클래스가 자식클래스에게 변수와 메소드를 물려준다. 
  •  class 자식클래스(부모클래스) 형태로 사용된다.
class human:
        def __init__(self, name, age):
                self.name = name
                self.age = age
        
        def Home(self, location):
                print("{0} 의 집은 {1}입니다. ".format(self.name, location))

class student(human): #human 클래스를 상속받아 student 클래스는 자식클래스가 된다
        def __init__(self, name, age, grade):
                human.__init__(self, name, age)
                self.grade = grade
                print("{0}이고 나이는 {1} 이며, {2}학생입니다.".format(self.name, self.age, self.grade))

class worker(human):  #human 클래스를 상속받아 worker 클래스는 자식클래스가 된다
        def __init__(self, name, age, salary):
                human.__init__(self, name, age)
                self.salary = salary
                print("{0}이고 나이는 {1} 이며, 연봉은 {2} 입니다.".format(self.name, self.age, self.salary))

hong = student( "홍길동",17,"고등" )
lim  = worker("임꺽정", 29, "5000만원" )

 

결과화면

 

 

 

○ 다중 상속

  • 여러개의 클래스에서 상속을 받는 개념
class human:
        def __init__(self, name, age):
                self.name = name
                self.age = age
        
        def Home(self, location):
                print("{0} 의 집은 {1}입니다. ".format(self.name, location))
class korean:
        def __init__(self, location,  doyouknow ):
                self.location = location
                self.doyouknow = doyouknow
                print("Do you Know {0} ??".format(self.doyouknow))

class student(human, korean): #human, korean 두개의 클래스는 상속 받는다 
        def __init__(self, name, age, grade, location, doyouknow ): 
                human.__init__(self, name, age) 
                korean.__init__(self, location, doyouknow)
                self.grade = grade
                print("{0}이고 나이는 {1} 이며, {2}학생입니다.".format(self.name, self.age, self.grade))


hong = student( "홍길동",17,"고등", "서울", "BTS" )

 

결과화면

 

 

○ 메소드 오버로딩

  • 부모클래스에서 정의한 메소드를 자식 클래스에서 재정의 하는 것
class human:
        def __init__(self, name, age):
                self.name = name
                self.age = age
        
        def Home(self, location):
                print("{0}의 집은 {1}입니다. ".format(self.name, location))
class korean:
        def __init__(self, location,  doyouknow ):
                self.location = location
                self.doyouknow = doyouknow
        
        def likefood(self, food):
                print("{0} 음식을 좋아합니다.".format(food))

class student(human, korean):
        def __init__(self, name, age, grade, location, doyouknow ):
                human.__init__(self, name, age)
                korean.__init__(self, location, doyouknow)
                self.grade = grade
        
        def like(self): #메소드 오버로딩
                print("김치")
                self.likefood("콘치즈") #korean 클래스의 메소드 오버로딩.
                self.Home(self.location) #human 클래스의 메소드 오버로딩.

hong = student( "홍길동",17,"고등", "서울", "BTS" )
hong.like()

 

결과화면

like 함수의 print 문과 korean클래스의 likefood 와 human클래스의 Home이 출력되는 것을 볼 수 있다.

 

 

○ Pass

  • 아무것도 하지 않고 일단은 넘어 간다
  • 실행 할 것이 아무 것도 없다는 것을 의미, 아무런 동작을 하지 않고 다음 코드를 실행
class Building():
        def __init__(self, name, location):
                pass #아무것도 안하고 일단은 완성된것처럼 넘어간다
                
##################################################         
                
def game_start():
        pass

 

 

○ Super

  • 자식클래스에서 부모클래스의 정보를 사용하고 싶을경우
  • 다중상속일 경우 상속받는 부모의 제일 처음 부분만 상속 받는다.
  • super().부모클래스내용
class korean:
        def __init__(self, location,  doyouknow ):
                self.location = location
                self.doyouknow = doyouknow

class student(korean):
        def __init__(self, grade, location, doyouknow ):
                super.__init__(self, location, doyouknow) #super 사용
                self.grade = grade

2021/02/04 - [개발/python] - [파이썬] class 정리- 사용법

 

[파이썬] class 정리- 사용법

○ class 자료형을 위한 일종의 템플릿이라고 생각하면된다. 객체의 구조와 행동을 정의 한다. class 키워드를 사용하여 새로운 클래스를 작성한다. class testClass: pass class 키워드를 이용하여 testClass

salmonworld.tistory.com

 

반응형

댓글