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)
네 사용할 수 있습니다.
이터레이터는 왜 필요합니까? - 효율적으로 코드를 작성하기 위해서는 반복문을 활용해서 데이터를 순회하는 것이 필요합니다. 반복가능한 객체인 이터레이터는 효율적인 코드를 구현하는 데 필요하다고 합니다.
이터레이터를 이해하기 위해서는 /혹은 도움이 되기 위해서는 추상베이스 클래스를 이해하고 있어야 한다고 합니다.
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 믹스인 클래스는 무엇입니까?
-믹스인이란 클래스에 추가적인 속성이나 메소드를 제공하는 것을 이야기합니다. 파이썬은 오른쪽부터 왼쪽으로 계승됩니다.