diff --git a/aula133.py b/aula133.py new file mode 100644 index 0000000..6c2827a --- /dev/null +++ b/aula133.py @@ -0,0 +1,41 @@ +# Encapsulamento (modificadores de acesso: public, protected, private) +# Python NÃO TEM modificadores de acesso +# Mas podemos seguir as seguintes convenções +# (sem underline) = public +# pode ser usado em qualquer lugar +# _ (um underline) = protected +# não DEVE ser usado fora da classe +# ou suas subclasses. +# __ (dois underlines) = private +# "name mangling" (desfiguração de nomes) em Python +# _NomeClasse__nome_attr_ou_method +# só DEVE ser usado na classe em que foi +# declarado. +from functools import partial + + +class Foo: + def __init__(self): + self.public = 'isso é público' + self._protected = 'isso é protegido' + self.__exemplo = 'isso é private' + + def metodo_publico(self): + # self._metodo_protected() + # print(self._protected) + print(self.__exemplo) + self.__metodo_private() + return 'metodo_publico' + + def _metodo_protected(self): + print('_metodo_protected') + return '_metodo_protected' + + def __metodo_private(self): + print('__metodo_private') + return '__metodo_private' + + +f = Foo() +# print(f.public) +print(f.metodo_publico())