You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: content/introducao-classes-metodos-python-basico.rst
+32-20
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,8 @@ Introdução a Classes e Métodos em Python (básico)
12
12
13
13
Eu não sou a melhor pessoa do mundo para explicar este assunto, mas eu escrevi este post para introduzir um tópico sobre *manipulação de banco de dados em SQLite3 com Python*, porém mais informações sobre classes e métodos podem ser encontradas nos links abaixo. Veja os exemplos em `https://github.com/rg3915/pythonDesktopApp <https://github.com/rg3915/pythonDesktopApp/tree/master/pythonBasico>`_.
14
14
15
+
PS: *Considere a sintaxe para Python 3*.
16
+
15
17
Segundo a documentação do `Python <https://docs.python.org/2/tutorial/classes.html#class-objects>`_ e o video `Python para Zumbis <https://www.youtube.com/watch?v=Zr_FiKbgRbU>`_, uma **classe** associa dados (**atributos**) e operações (**métodos**) numa só estrutura. Um **objeto** é uma variável cujo tipo é uma classe, ou seja, um **objeto é uma instância** de uma classe.
16
18
17
19
Na sua sintaxe mais elementar definimos uma classe conforme abaixo:
@@ -25,15 +27,15 @@ E um método (função) como:
25
27
26
28
.. code-block:: python
27
29
28
-
defMetodo(args):
30
+
defmetodo(args):
29
31
pass
30
32
31
33
onde ``args`` são argumentos opcionais (parâmetros de entrada).
32
34
A função ``Metodo`` pode retornar um valor de saída:
33
35
34
36
.. code-block:: python
35
37
36
-
defMetodo(args):
38
+
defmetodo(args):
37
39
returnpass
38
40
39
41
Juntando os dois temos:
@@ -43,11 +45,13 @@ Juntando os dois temos:
43
45
classNomeDaClasse(object):
44
46
atributo1 =None
45
47
46
-
defMetodo(args):
48
+
defmetodo(args):
47
49
pass
48
50
49
51
``pass`` significa que você pode escrever o seu código no lugar. E ``atributo1`` é um atributo com valor inicial ``None`` (nada). Poderia ser ``atributo1 = 0``, por exemplo.
50
52
53
+
Importante: Note que para nome de **classes** usamos *PalavrasComeçandoPorMaiúscula* e para nome de **métodos (funções)** usamos *minúsculas_separadas_por_underscore*. Esta é uma convenção adotada pelos *Pythonistas* segundo o `Guia de Estilo <http://www.python.org.br/wiki/GuiaDeEstilo>`_ **PEP 8** - `Style Guide for Python Code <http://legacy.python.org/dev/peps/pep-0008/>`_ escrito por `Guido Van Rossum <http://www.python.org.br/wiki/GuidoVanRossum>`_.
54
+
51
55
Exemplo 1 - Calculadora simples
52
56
-------------------------------
53
57
@@ -92,13 +96,13 @@ Podemos rodar o Python no modo `modo interativo <https://docs.python.org/2/tutor
92
96
93
97
.. code-block:: python
94
98
95
-
$python
99
+
$python3
96
100
>>>from calculadora import Calculadora
97
101
>>> c = Calculadora(128,2)
98
-
>>>print'Soma:', c.soma()
99
-
>>>print'Subtração:', c.subtrai()
100
-
>>>print'Multiplicação:', c.multiplica()
101
-
>>>print'Divisão:', c.divide()
102
+
>>>print('Soma:', c.soma())
103
+
>>>print('Subtração:', c.subtrai())
104
+
>>>print('Multiplicação:', c.multiplica())
105
+
>>>print('Divisão:', c.divide())
102
106
103
107
``c = Calculadora(128,2)`` é uma instância da classe com dois valores iniciais.
104
108
@@ -109,7 +113,7 @@ O resultado é:
109
113
>>> Soma: 130
110
114
>>> Subtração: 126
111
115
>>> Multiplicação: 256
112
-
>>> Divisão: 64
116
+
>>> Divisão: 64.0
113
117
114
118
Podemos redefinir os valores iniciais da seguinte forma:
115
119
@@ -125,6 +129,10 @@ Resultado:
125
129
126
130
>>>54
127
131
132
+
Importante: apesar de não fazer parte do escopo deste artigo, mas vejam este video `Operadores aritméticos e divisão no Python 2 e Python 3 <https://www.youtube.com/watch?v=_HZOAWOrXrQ>`_, explicando sobre a diferença no resultado da divisão nas duas versões do Python.
133
+
134
+
Vejam também este artigo sobre ponto flutuante: `Floating Point Arithmetic Issues and Limitations <https://docs.python.org/3.1/tutorial/floatingpoint.html>`_.
135
+
128
136
Exemplo 2 - Calculadora
129
137
-----------------------
130
138
@@ -151,13 +159,13 @@ Usando o **terminal no modo interativo** façamos:
151
159
152
160
.. code-block:: python
153
161
154
-
$python
162
+
$python3
155
163
>>>from calculadora2 import Calculadora
156
164
>>> c = Calculadora()
157
-
>>>print'Soma:', c.soma(2,3)
158
-
>>>print'Subtração:', c.subtrai(2,10)
159
-
>>>print'Multiplicação:', c.multiplica(3,3)
160
-
>>>print'Divisão:', c.divide(128,2)
165
+
>>>print('Soma:', c.soma(2,3))
166
+
>>>print('Subtração:', c.subtrai(2,10))
167
+
>>>print('Multiplicação:', c.multiplica(3,3))
168
+
>>>print('Divisão:', c.divide(128,2))
161
169
162
170
A vantagem de colocar os parâmetros em cada método, é que podemos calcular qualquer valor sem ter que instanciar uma nova classe para cada valor diferente.
163
171
@@ -201,19 +209,19 @@ Veremos o código na íntegra e depois os comentários.
201
209
u1.save()
202
210
u2 = User('Fabio', 20)
203
211
u2.save()
204
-
printUser.all()
212
+
print(User.all())
205
213
206
214
Você pode suprimir o final do código (a partir do ``if``) e importar a classe no terminal no `modo interativo <https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>`_ veja este `video <https://www.youtube.com/watch?v=M1BAlDufqao>`_:
207
215
208
216
.. code-block:: python
209
217
210
-
$python
218
+
$python3
211
219
>>>from user import User
212
220
>>> u1 = User('Regis', 35)
213
221
>>> u1.save()
214
222
>>> u2 = User('Fabio',20)
215
223
>>> u2.save()
216
-
>>>printUser.all()
224
+
>>>print(User.all())
217
225
218
226
Agora os comentários:
219
227
@@ -298,15 +306,15 @@ Demonstração do uso da classe.
298
306
if__name__=='__main__':
299
307
u1 = User('Regis', 35)
300
308
u2 = User('Fabio',20)
301
-
printUser.all()
309
+
print(User.all())
302
310
303
311
Note que nesse ``print`` a lista está vazia.
304
312
305
313
.. code-block:: python
306
314
307
315
u1.save()
308
316
u2.save()
309
-
printUser.all()
317
+
print(User.all())
310
318
311
319
Após chamar o ``save`` para as duas instâncias elas são guardadas e o método ``User.all()`` retorna essa lista.
312
320
@@ -324,4 +332,8 @@ Mais informações em
324
332
325
333
`Python para Zumbis <https://www.youtube.com/watch?v=Zr_FiKbgRbU>`_
326
334
327
-
`João Reis <http://homepages.dcc.ufmg.br/~joaoreis/Site%20de%20tutoriais/aprendendopython/poo.html#init>`_
335
+
`João Reis <http://homepages.dcc.ufmg.br/~joaoreis/Site%20de%20tutoriais/aprendendopython/poo.html#init>`_
336
+
337
+
`Operadores aritméticos e divisão no Python 2 e Python 3 <https://www.youtube.com/watch?v=_HZOAWOrXrQ>`_
338
+
339
+
`Floating Point Arithmetic Issues and Limitations <https://docs.python.org/3.1/tutorial/floatingpoint.html>`_
0 commit comments