관리 메뉴

웹개발자의 기지개

[Python] 클래스3 - 상속 본문

python/파이썬 교육

[Python] 클래스3 - 상속

http://portfolio.wonpaper.net 2021. 5. 5. 11:35

# 파이썬 클래스 상세 이해

# 상속, 다중상속

 

# 예제1

# 상속 기본

# 슈퍼 클래스 (부모 클래스) 및 서브 클래스(자식) -> 모든 속성, 메소드 사용가능하다.

 

# 라면 -> 속성(종류 , 회사, 맛, 면종류, 이름) : 부모

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class Car:
    """Parent Class"""
    def __init__(self, tp, color):
        self.type = tp
        self.color = color
    def show(self):
        return "Car Class 'Show Method!'"
 
class BmwCar(Car):
    """Sub Class"""
    def __init__(self, car_name, tp, color):
        super().__init__(tp,color)
        self.car_name = car_name
 
    def show_model(self-> None:
        return "You Car Name : %s" % self.car_name
 
class BenzCar(Car):
    """Sub Class"""
    def __init__(self, car_name, tp, color):
        super().__init__(tp,color)
        self.car_name = car_name
 
    def show_model(self-> None:
        return "You Car Name : %s" % self.car_name
 
    def show(self):     # 부모한테도 있는 show() 메소드
        print(super().show())
        return 'Car Info : %s %s %s' % (self.car_name, self.type, self.color)
 
# 일반 사용
model1 = BmwCar('520d''sedan''red')
 
print(model1.color)         #   super
print(model1.type)          #   super
print(model1.car_name)      #   sub
print(model1.show())        #   super
 
print() 
 
print(model1.show_model())  #   sub
print(model1.__dict__)
 
print()
# 메소드 Overriding (오버라이딩) 
 
model2 = BenzCar('220d','suv','black')
print(model2.show())        #   sub Method Overriding 자식에서 별도로 오버라이딩한 show() 메소드
 
print()
 
# Parent Method Call
model3 = BenzCar("350s","sedan""silver")
print(model3.show())        #   sub Method Overriding   
 
# Inheritance Info - 상속관계 보기
print(BmwCar.mro())
print(BenzCar.mro())
cs

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 다중 상속
 
# class X(object):
#     pass
 
class X():
    pass
 
class Y():
    pass
 
class Z():
    pass
 
class A(X,Y):
    pass
 
class B(Y,Z):
    pass
 
class M(B,A,Z):
    pass
 
print(M.mro())
print(A.mro())
cs

 

 

 

 

Comments