본문 바로가기
수업(국비지원)/Python

[Python] 멤버 변수 - 인스턴스 변수, 클래스변수 와 상속

by byeolsub 2023. 4. 24.
  • 멤버 변수
# 멤버 변수 : 클래스 내부에 설정.
# 인스턴스 변수 : 객체별로 할당 된 변수. 
#                self.변수명으로 호출 
# 클래스 변수 : 객체에 공통된 변수. 하나의 변수만 할당. 
#              클래스명.변수명으로 호출

 

📌

class Car :
    color = "" # 색상
    speed = 0 # 속도
    num = 0 # 자동차 번호
    count = 0 # 자동차객체 개수
    def __init__(self,v1="",v2=0) : # 생성자
        self.color = v1 # 인스턴스 변수
        self.speed = v2 # 인스턴스 변수
        Car.count += 1 # 클래스 변수
        self.num = Car.count # 인스턴스 변수
    def printMessage(self) :
        print("색상: %s, 속도: %dkm, 번호: %d, 생산번호: %d" %\\
              (self.color,self.speed,self.num,Car.count))
            
car1 = Car("빨강",10)
car1.printMessage() # 결과 -> 색상: 빨강, 속도: 10km, 번호: 1, 생산번호: 1
car2 = Car("파랑")
car1.printMessage() # 결과 -> 색상: 빨강, 속도: 10km, 번호: 1, 생산번호: 2
car2.printMessage() # 결과 -> 색상: 파랑, 속도: 0km, 번호: 2, 생산번호: 2

 

❓ 문제 : card 클래스 구현하기

#문제 : card클래스 구현하기
#멤버 변수 : kind(카드 종류),number(카드숫자)
#            no(카드번호),count(현재까지 생성된 카드 개수)
#멤버 함수 : printCard() kind:heart, number:1, no:1, count:1

class Card :
    kind = ""
    number = 0
    no = 0
    count = 0
    def __init__(self,v1="Spade", v2=1) : # 생성자 오버로딩 불가능.
        self.kind = v1
        self.number = v2
        Card.count += 1
        self.no = Card.count
    def printCard(self) :
        print("kind: %s, number: %d, no: %d,count: %d" %\\
              (self.kind,self.number,self.no,Card.count))

card1 = Card()
card1.printCard() #kind:Spade,number:1,no:1,count:1
card2 = Card("Heart")
card2.printCard() #kind:Heart,number:1,no:2,count:2
card3 = Card("Spade",10)
card1.printCard() #kind:Spade,number:1,no:1,count:3
card2.printCard() #kind:Heart,number:1,no:2,count:3
card3.printCard() #kind:Spade,number:10,no:3,count:3

  • 상속
# 상속 : 기존의 클래스를 이용하여 새로운 클래스를 생성하는 방식
#        다중상속이 가능 하다.
# class 클래스명 (부모클래스1, 부모클래스2,...)

 

📌 상속

class Car : # 기본 생성자 제공 클래스
    speed = 0
    door = 3
    def upSpeed(self,v) :
        self.speed += v
        print("현재 속도(부모클래스): %d" % self.speed)
        
# Sedan 클래스 : Car 클래스의 하위 클래스
# class Sedan extends Car {} : Java 방식
class Sedan(Car) : # Car 클래스를 상속
    pass # 실행 내용이 없음. 부모클래스와 동일
    
# Truck 클래스 : Car 클래스의 하위클래스    
class Truck(Car) : # 기본 생성자 제공 클래스
    def upSpeed(self,v) : # 오버라이딩 : 부모클래스의 함수를 재 정의
        self.speed += v
        if self.speed > 150 :
            self.speed = 150
        print("현재 속도(자손클래스): %d" % self.speed)  

car1 = Car()
car1.upSpeed(200)
sedan1 = Sedan()
sedan1.upSpeed(200) # Car 클래스의 upSpeed() 함수 호출
truck1 = Truck()
truck1.upSpeed(200) # Truck 클래스의 upSpeed() 함수 호출

 

 

'수업(국비지원) > Python' 카테고리의 다른 글

[Python] 추상 함수, 모듈  (0) 2023.04.24
[Python] 클래스에서 사용되는 특별한 함수들  (0) 2023.04.24
[Python] 클래스  (0) 2023.04.24
[Python] 예외 처리  (0) 2023.04.24
[Python] 전역변수, 지역변수  (0) 2023.04.24