[패스트캠퍼스 수강 후기] 파이썬 인강 100% 환급 챌린지 24 회차 미션

2020. 11. 25. 21:52Coding/Python-Fastcampus

728x90

04. Decorator - 01. Decorator란

Decorator는 @를 붙여서 함수 위에서 사용을 한다.

Decorator가 붙어있으면 함수가 실행되는게 아니고, Decorator에 함수가 들어간다고 생각하면된다.

그러므로 Decorator에서 함수로 반환이 안되면, 함수를 실행시키지 않을 수도 있다.

 

 

 

 


07. 클래스 - 04. 상속, 다중상속(2)

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
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 'Your 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(self):
        print(super().show())
        return 'Car Info : %s %s %s' % (self.car_name, self.color,self.type)
 
    def show_model(self-> None:
        return 'Your Car Name : %s' % self.car_name
cs

강의엔 다양한 예제를 다뤘지만 일단은 이 부분에 집중한다.

1. 부모 클래스와 자식 클래스는 """Parent Class""" or """Sub Class""" 라고 Class안에 적어주는게 국룰.

2. Overriding은 자바에서도 많이보던 개념이다.

3. 부모의 함수를 사용하고 싶지 않으면, 똑같은 함수명을 선언해서 다르게 쓸 수 있다.

4. 부모의 함수를 가져다가 고쳐 쓰면서도, 부모의 함수를 사용하고 싶으면, super()로 해당 함수를 가져와서 쓸 수 있다.

 

 

 

 


07. 클래스 - 05. 상속, 다중상속(3)

Ingeritance Info : 상속 정보.

1
2
3
# Inheritance Info
print('Inheritance Info : ', BmwCar.mro())
print('Inheritance Info : ', BenzCar.mro())
cs

상속 정보를 쭉 나타낸다.

object는 기본적으로 상속 받아있는거로 생각하면된다.

 

 


다중 상속.

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():
    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())
cs

상속 방법 : 함수에서 parameter를 적어놓는것처럼 class를 넣어서 사용하면된다.

상속 받은 클래스를 다시 상속 할 수 있다.

여러 클래스를 한번에 상속 받을 수도 있다.

 

 

 


그냥 궁금한거.

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
class X():
    def fun_x(self) :
        return 'i am x'
 
 
class Y():
    def fun_y(self) :
        return 'i am y'
 
 
class Z():
    pass
 
 
class A(X, Y):
    def fun_y(self) :
        return 'we are y'
 
 
class B(Y, Z):
    pass
 
 
class M(B, A, Z):
    pass
 
print(A().fun_x())
 
print(M().fun_x())
 
print(M().fun_y())
cs

 

1. 여러개를 상속 받았어도, 부모클래스에 그냥 접근해서 쓰면된다.

2. class M처럼 여러번 상속 받았어도 M->A->X에 접근해서 바로 fun_x()를 사용할 수 있다.

3. 상속 중간에 overriding이 들어가면 당연히 바뀐 함수가 출력된다.

4. M->A->Y로 접근이 가능한지 테스트해봤는데 잘 안된다. 이건 가능할지 잘 모르겠다.

 

 

 

 

올인원 패키지 : 파이썬 웹 개발👉https://bit.ly/33a7nvc

 

728x90