Gerenciando acesso a dados: atributos privados

Programação orientada a objetos em Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Todos os dados da classe são públicos

somos todos adultos aqui

Programação orientada a objetos em Python

Restringindo acesso

  • Convenções de nomenclatura
  • Use @property para personalizar acesso
  • Sobrescrevendo __getattr__() e __setattr__()
Programação orientada a objetos em Python

Convenção de nomes: atributos internos

obj._att_name, obj._method_name()

  • Começa com um único _ → "interno"
  • Não faz parte da API pública
  • Como usuário da classe: "não mexa nisso"
  • Como desenvolvedor da classe: use para detalhes de implementação, funções auxiliares..

df._is_mixed_type , datetime._ymd2ord()

Programação orientada a objetos em Python

Convenção de nomes: atributos pseudoprivados

obj.__attr_name , obj.__method_name()

  • Começa mas não termina com __ → "privado"
  • Não é herdado
  • Nome modificado: obj.__attr_name é interpretado como obj._MyClass__attr_name
  • Usado para evitar conflitos de nomes em classes herdadas

 

Liderando e terminando com __ são apenas usados para métodos Python embutidos (__init__(),__repr__())!

Programação orientada a objetos em Python

Vamos praticar!

Programação orientada a objetos em Python

Preparing Video For Download...