-
Notifications
You must be signed in to change notification settings - Fork 0
/
05_getter_y_setter.py
73 lines (53 loc) · 1.63 KB
/
05_getter_y_setter.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# PROPIEDADES Y DECORADORES
"""
Crear atributos PROTEGIDOS: _
Crear atributos PRIVADOS: __
"""
class Invoice:
def __init__(self, client, total) -> None:
self._client = client # Atributo protegido
self._total = total # Atributo protegido
def formatter(self):
return f"{self._client} owes: ${self._total}"
"""
Al ser atributos protegidos, 'no podemos' acceder a ellos desde fuera de la
clase, pero podemos usar decoradores para crear 'GETTERS' y 'SETTERS' para
obtener y/o modificar los valores de los mismos.
"""
# GETTER
@property
def client(self):
return self._client
# SETTER
@client.setter
def client(self, client):
self._client = client
# GETTER
@property
def total(self):
return self._total
"""
SINTAXIS DE GETTERS
@property
def attribute(self):
return self._attribute
SINTAXIS DE SETTERS
@attribute.setter
def attribute(self, attribute):
self._attribute = attribute
"""
# EJEMPLOS DE USO
google = Invoice("Google", 100)
print(google.formatter())
# Google owes: $100
# Obtener los valores de los atributos protegidos gracias a @property
print(google.client) # Google
print(google.total) # 100
# Modificar los valores gracias al SETTER
google.client = "Yahoo" # Se modifica el valor
print(google.client) # Yahoo
"""
El atributo 'total' no tiene SETTER, por lo que si intentamos ejecutar este
código, obtendríamos un error:
"""
# google.total = 200 # AttributeError: can't set attribute 'total'