15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

correspondentes, o módulo avisará que algo está errado.

from collections.abc import Sequence

class BadType(Sequence):

pass

foo = BadType()

>>>

TypeError: Can't instantiate abstract class BadType with

abstract methods __getitem__, __len__

Uma vez que todos os métodos requeridos pela classe abstrata básica sejam

implementados, como fizemos anteriormente com SequenceNode, todos os

métodos adicionais, como index e count, serão implementados automaticamente.

class BetterNode(SequenceNode, Sequence):

pass

tree = BetterNode(

# ...

)

print('Index of 7 is', tree.index(7))

print('Count of 10 is', tree.count(10))

>>>

Index of 7 is 3

Count of 10 is 1

O benefício de usar essas classes abstratas básicas é ainda maior para tipos mais

complexos como Set e MutableMapping, que têm grande quantidade de métodos

especiais que precisariam ser implementados manualmente para atender às

convenções do Python.

Lembre-se

• Herde diretamente dos tipos contêiner do Python (como list ou dict) para

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!