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.

• Evite usar heranças múltiplas; em vez disso empregue classes mix-in, que

produzem o mesmo resultado.

• Use comportamentos plugáveis no nível da instância para permitir

personalização por classe sempre que as classes mix-in necessitarem.

• Combine dois ou mais mix-ins para criar funcionalidades complexas a partir

de comportamentos simples.

Item 27: Prefira atributos públicos em vez de

privativos

Em Python, há apenas dois tipos de visibilidade para atributos em uma classe:

públicos e privativos, representados pelas palavras reservadas public e private.

class MyObject(object):

def __init__(self):

self.public_field = 5

self.__private_field = 10

def get_private_field(self):

return self.__private_field

Os atributos públicos podem ser acessados por qualquer um usando o operador

ponto no objeto.

foo = MyObject()

assert foo.public_field == 5

Os campos privativos são especificados precedendo o nome do atributo com dois

caracteres underscore, sem espaços. Eles podem ser acessados diretamente por

métodos na classe que os contém.

assert foo.get_private_field() == 10

Contudo, acessar de fora da classe esses campos privativos levanta uma exceção.

foo.__private_field

>>>

AttributeError: 'MyObject' object has no attribute '__private_field'

Os métodos de classe também têm acesso a atributos privativos porque são

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!