-
Notifications
You must be signed in to change notification settings - Fork 0
/
aula133.py
37 lines (31 loc) · 1.05 KB
/
aula133.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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.
class Foo:
def __init__(self):
self.public = 'Isso é público'
self._protected = 'Isso e Protegido!'
self.__private = 'Isso e PRIVADO!'
def metodo_public(self):
print(self.__private)
return 'Metodo publico kkkkk'
def _metodo_protected(self):
self.__metodo_private()
return 'Metodo protegido'
def __metodo_private(self):
return 'PRIVADO!'
f = Foo()
# print(f._protected)
# print(f.public)
print(f.metodo_public())
# print(f._Foo__metodo_private())