파이썬 기초문법5

김민정·2022년 4월 28일
0

위코드 과제

목록 보기
8/11
  1. 이터레이터는 무엇입니까?
    이터레이터는 값을 순차적으로 꺼내 올 수 있는 객체입니다.
  2. 이터레이터는 언제 사용할 수 있습니까?
    dir로 호출하여 '()iter()'함수가 있는지 확인해보고 있으면 사용이 가능합니다.
  3. 딕셔너리에 대한 for 문을 while문으로 구현할 때 이터레이터를 사용할 수 있습니까?

    D = {'a':1, 'b':2, 'c':3}
    for key in D.keys():
    print(key)

I = iter(D)
while True:
try:
a = next(I) # I.next()
except StopIteration:
break
print(a)

네 사용할 수 있습니다.

  1. 이터레이터는 왜 필요합니까? - 효율적으로 코드를 작성하기 위해서는 반복문을 활용해서 데이터를 순회하는 것이 필요합니다. 반복가능한 객체인 이터레이터는 효율적인 코드를 구현하는 데 필요하다고 합니다.

  2. 이터레이터를 이해하기 위해서는 /혹은 도움이 되기 위해서는 추상베이스 클래스를 이해하고 있어야 한다고 합니다.

    5-1. abc 추상 베이스 클래스란 무엇입니까?

    추상베이스 클래스를 알기 위해서 일단 추상클래스부터 알아야 겠습니다.
    5-1-1. 추상클래스란 무엇입니까?
    구현 내용은 없고 메소드 목록만 가진 클래스를 의미합니다. 추상클래스 자체로는 인스턴스화가 불가능하며 클래스의 메소드를 상속받는 파생 클래스에게 구현하도록 강제하기 위해 사용된다고 합니다.
    5-1-2. 추상클래스는 어떻게 사용합니까?
    -abc모듈의 abc클래스와 abstractmethod 데코레이터를 임포트하기
    from abc import ABC, abstractmethod
    -abc클래스를 상속받은 추상 클래스를 정의하기
    -파생 클래스에게 구현을 강제할 메소드에 @abstractmethod 데코레이터를 추가하기

    class Shape(ABC):
    @abstractmethod
    def Draw(self):
    pass
    class Rect(Shape):
    pass

    이렇게 하면 s=Shape()라고 인스턴스화하지 못합니다.

    -추상 클래스를 인스턴스화하기 위해 클래스 내부의 추상 메소드들을 모두 재정의해주기

    from abc import ABC, abstractmethod
    class Shape(ABC) :
    @abstractmethod
    def Draw(self) :
    pass
    class Rect(Shape) :
    def Draw(self) :
    print('Draw Rect')
    r = Rect()
    r.Draw() # Draw Rect'

    5-1-3. 추상클래스는 왜 필요합니까?
    코드의 재사용성을 높여 유지보수 비용을 낮추는 상속과 하나의 인터페이스를 통해 서로 다른 여러 타입을 제공하는 다형성을 효과적으로 구현할 수 있는 방법이라는 측면에서 추상클래스가 필요하다고 합니다.

    5-2. class abc.ABCMeta란 무엇입니까?
    추상 베이스 클래스를 정의하기 위한 메타 클래스를 이야기합니다. 이 클래스를 통해서 abc를 만들수 있습니다. abc는 직접 서브 클래싱 될 수 있으며 믹스인 클래스의 역할을 합니다.

    5-2-1 믹스인 클래스는 무엇입니까?
    -믹스인이란 클래스에 추가적인 속성이나 메소드를 제공하는 것을 이야기합니다. 파이썬은 오른쪽부터 왼쪽으로 계승됩니다.

0개의 댓글