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
+71-10Lines changed: 71 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,11 +10,15 @@ Introdução a Classes e Métodos em Python (básico)
10
10
:github: rg3915
11
11
:summary: Abordaremos aqui o básico sobre o uso de classes e métodos e a manipulação de dados em Python.
12
12
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>`_.
13
+
Eu não sou a melhor pessoa do mundo para explicar este assunto, mas vou tentar fazer uma breve introdução a classes e métodos em Python.
14
+
15
+
Mais informações sobre classes e métodos podem ser encontradas nos links abaixo. Veja os exemplos em `https://github.com/rg3915/python-classes-metodos <https://github.com/rg3915/python-classes-metodos/tree/master/pythonBasico>`_.
16
+
17
+
> Este artigo foi atualizado em 23 de Maio de 2018.
14
18
15
19
PS: *Considere a sintaxe para Python 3*.
16
20
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.
21
+
Segundo a documentação do `Python <https://docs.python.org/3/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 instância** de uma classe. Ou seja, uma representação da classe. Por exemplo, Regis é uma instância de uma classe chamada Pessoa, mas a Pessoa é a classe que o representa de uma forma genérica.
18
22
19
23
Na sua sintaxe mais elementar definimos uma classe conforme abaixo:
20
24
@@ -43,10 +47,9 @@ Juntando os dois temos:
43
47
.. code-block:: python
44
48
45
49
classNomeDaClasse(object):
46
-
atributo1 =None
47
50
48
51
defmetodo(self, args):
49
-
pass
52
+
pass
50
53
51
54
52
55
@@ -62,17 +65,15 @@ Um exemplo de uma função vazia feita em linguagem C e a mesma função vazia f
62
65
.. code-block:: C
63
66
64
67
void metodo(int num){
65
-
68
+
66
69
}
67
70
68
71
.. code-block:: python
69
72
70
73
defmetodo(num):
71
74
pass
72
75
73
-
Voltando a explicação sobre a classe: O ``atributo1`` é um atributo com valor inicial ``None`` (nada). Poderia ser ``atributo1 = 0``, por exemplo.
74
-
75
-
Importante: Note que para nome de **classes** usamos *PalavrasComeçandoPorMaiúscula* (isso tambem é conhecido como "CamelCase") 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>`_.
76
+
Importante: Note que para nome de **classes** usamos *PalavrasComeçandoPorMaiúscula* (isso tambem é conhecido como "`CapitalizeWords <http://pep8.org/#descriptive-naming-styles>`_") 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>`_.
76
77
77
78
Exemplo 1 - Calculadora simples
78
79
-------------------------------
@@ -187,16 +188,21 @@ Usando o **terminal no modo interativo** façamos:
187
188
>>>from calculadora2 import Calculadora
188
189
>>> c = Calculadora()
189
190
>>>print('Soma:', c.soma(2,3))
191
+
Soma: 5
190
192
>>>print('Subtração:', c.subtrai(2,10))
193
+
Subtração: -8
191
194
>>>print('Multiplicação:', c.multiplica(3,3))
195
+
Multiplicação: 9
192
196
>>>print('Divisão:', c.divide(128,2))
197
+
Divisão: 64.0
198
+
>>>
193
199
194
200
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.
195
201
196
202
Exemplo 3 - Classe Pedido
197
203
-------------------------
198
204
199
-
Agora veremos um exemplo que mais se aproxima do que iremos fazer em banco de dados, mas aqui iremos apenas instanciar os objetos e armazená-los em memória numa lista.
205
+
Agora veremos um outro exemplo, mas aqui iremos apenas instanciar os objetos e armazená-los em memória numa lista.
200
206
201
207
Veremos o código na íntegra e depois os comentários.
202
208
@@ -246,6 +252,9 @@ Podemos rodar o Python no modo `modo interativo <https://docs.python.org/3/tutor
246
252
>>> u2 = User('Fabio',20)
247
253
>>> u2.save()
248
254
>>>print(User.all())
255
+
[<User: 1- Regis -35>
256
+
, <User: 2- Fabio -20>
257
+
]
249
258
250
259
Agora os comentários:
251
260
@@ -342,11 +351,63 @@ Note que nesse ``print`` a lista está vazia.
342
351
343
352
Após chamar o ``save`` para as duas instâncias elas são guardadas e o método ``User.all()`` retorna essa lista.
344
353
354
+
Exemplo 4 - Televisão
355
+
---------------------
356
+
357
+
Escrevi mais um exemplo para fixar melhor o entendimento: `tv.py <https://github.com/rg3915/python-classes-metodos/blob/master/pythonBasico/tv/tv.py>`_.
358
+
359
+
.. code-block:: python
360
+
361
+
classTelevisao():
362
+
363
+
def__init__(self):
364
+
self.ligada =False
365
+
self.canal =2
366
+
367
+
defmuda_canal_para_baixo(self):
368
+
self.canal -=1
369
+
370
+
defmuda_canal_para_cima(self):
371
+
self.canal +=1
372
+
373
+
if__name__=='__main__':
374
+
tv = Televisao()
375
+
print('Canal inicial:', tv.canal)
376
+
print('Ligada:', tv.ligada)
377
+
378
+
tv.ligada =True
379
+
tv.canal =5
380
+
381
+
print('Ligada:', tv.ligada)
382
+
print('Canal inicial:', tv.canal)
383
+
tv.muda_canal_para_cima()
384
+
print('Canal +', tv.canal)
385
+
tv.muda_canal_para_cima()
386
+
print('Canal +', tv.canal)
387
+
tv.muda_canal_para_baixo()
388
+
print('Canal -', tv.canal)
389
+
390
+
Este programa está muito bem explicado no video `Python para Zumbis <https://www.youtube.com/watch?v=Zr_FiKbgRbU>`_.
391
+
392
+
A seguir o resultado do programa:
393
+
394
+
.. code-block:: python
395
+
396
+
$ python tv.py
397
+
('Canal inicial:', 2)
398
+
('Ligada:', False)
399
+
('Ligada:', True)
400
+
('Canal inicial:', 5)
401
+
('Canal +', 6)
402
+
('Canal +', 7)
403
+
('Canal -', 6)
404
+
405
+
345
406
Agradeço a colaboração de `Fabio Cerqueira <https://gist.github.com/fabiocerqueira/1b05352a26892dea6813>`_.
346
407
347
408
Veja os exemplos em `https://github.com/rg3915/pythonDesktopApp <https://github.com/rg3915/pythonDesktopApp/tree/master/pythonBasico>`_.
0 commit comments