0% acharam este documento útil (0 voto)
12 visualizações25 páginas

Programação Orientada a Objetos em Python

O documento é um guia sobre Programação Orientada a Objetos (POO) em Python, abordando conceitos como classes, atributos, métodos e a importância do construtor. Ele explica como criar e instanciar objetos, além de discutir a utilização de métodos estáticos e atributos de classe. O guia também destaca a convenção de nomenclatura e a estrutura básica da POO em Python.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
12 visualizações25 páginas

Programação Orientada a Objetos em Python

O documento é um guia sobre Programação Orientada a Objetos (POO) em Python, abordando conceitos como classes, atributos, métodos e a importância do construtor. Ele explica como criar e instanciar objetos, além de discutir a utilização de métodos estáticos e atributos de classe. O guia também destaca a convenção de nomenclatura e a estrutura básica da POO em Python.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Guia de Programação com

Python

Programação Orientada a Objetos; Classes,


construtores, atributos e métodos
Objetivos
. Crie classes para definir objetos
. Write methods and create attributes for objects
. Instanciar objetos a partir de classes
. Restringir o acesso aos atributos de um objeto
. Trabalhe tanto com classes de novo estilo quanto com classes de estilo antigo

. O Programa de Cuidados com Criaturas

Guia de Programação com Python 2


Palestra 1
Python é orientado a objetos
. Programação orientada a objetos (POO):
Metodologia que define problemas em termos de
objetos que enviam mensagens uns aos outros
–dir(1)
Em um jogo, um objetoMissel poderia enviar um objetoNavio
uma mensagem para Explodir

. OOP não é obrigatório, ao contrário de Java e C#

Guia de Programação com Python 3


Compreendendo os Fundamentos de Orientação a Objetos
. OOP permite a representação de objetos da vida real como
objetos de software (por exemplo, um dicionário como objeto)
. Objeto: Uma única unidade de software que combina
atributos e métodos
. Atributo: Uma "característica" de um objeto; como um
variável associada a um tipo de objeto
. Método: Um "comportamento" de um objeto; como uma função
associado a um tipo de objeto
. Classe:Código que define os atributos e
métodos de uma espécie de objeto (Uma classe é uma coleção
de variáveis e funções trabalhando com elas
variáveis)
4
Conceitos Fundamentais de POO

. Ocultação de informações
. Abstração
. Encapsulamento
. Modularidade
. Polimorfismo
. Herança

Guia de Programação com Python 5


Criando Classes para Objetos
classe Filhote(object):
def __init__(self, nome, cor):
[Link] = name
[Link] = color
def latir(self):
print "Eu sou", cor, nome
puppy1 = Puppy("Max", "brown")
[Link]()
puppy2 = Puppy("Ruby", "black")
[Link]()
. Classe: Código que define os atributos e
métodos de um tipo de objeto
. Instanciar: Criar um objeto; Um único objeto é
chamado anInstance
6
O Programa Simples de Criaturas
classe Critter(object):
Um animal de estimação virtual

def falar(self):
print "Oi. Eu sou uma instância da classe Critter."
# main
crit = Criatura()
[Link]()
. Defina a classe:
–Nome da classe, comece com letra maiúscula, por convenção
–objeto: classe baseada em (tipo incorporado do Python)

. Defina um método
–Como definir uma função
Deve ter um primeiro parâmetro especial, self, que fornece
modo para um método referir-se ao próprio objeto
7
Métodos de classe e parâmetro 'self'
. Os métodos de classe têm apenas uma diferença específica.
de funções ordinárias--elas devem ter um extra
primeiro nome que deve ser adicionado ao início de
a lista de parâmetros
. Você não atribui um valor para este parâmetro (self)
quando você chamar o método, o Python o fornecerá.
. Esta variável em particular refere-se ao próprio objeto,
e por convenção, é dado o nome de self.

Guia de Programação com Python 8


Instanciando um Objeto
crit = Criatura()

. Crie um novo objeto com o nome da classe seguido por set


de parênteses
–Critter() cria um novo objeto da classeBichinho
. É possível atribuir um objeto recém-instanciado a uma variável
de qualquer nome
–crit = Critter() atribui um novo objeto Critter acrit
. Evite usar uma variável com o mesmo nome da classe
nome em letras minúsculas

Guia de Programação com Python 9


Criando Múltiplos Objetos
crit1 = Critter()
crit2 = Critter()

. Criar múltiplos objetos é fácil


. Dois objetos criados aqui
. Cada objeto é um ser autônomo e completo.

Guia de Programação com Python 10


Invocando um Método
[Link]()

. QualquerBichinhoo objeto tem métodofalar()


. [Link]()invocafalar()método deBicho
objetocrítica
. Imprime cadeiaOi. Eu sou uma instância da classe
Critter.

simple_critter.py

Guia de Programação com Python 11


Usando Construtores
. Construtor: Um método especial que é
invocado automaticamente logo após um novo objeto ser
criado
. Geralmente escrevo um em cada aula
. Geralmente configura os valores iniciais dos atributos de
novo objeto no construtor

Guia de Programação com Python 12


Criando um Construtor
def __init__(self):
Um novo animalzinho nasceu!

. NovoBichoo objeto se anuncia automaticamente


ao mundo
. __init__
–É um nome de método especial
–Chamado automaticamente por new Bichinhoobjeto

Guia de Programação com Python 13


Inicializando Atributos
classe Critter (objeto):
def __init__(self, nome):
[Link] = name
...
crit1 = Critter("Poochie”)

. Os atributos do objeto podem ser criados e inicializados automaticamente


através do construtor (grande conveniência!)
. o parâmetro self é o primeiro em cada método de instância
–eu recebe referência a novoBichinhoobjeto
mesmo

–nome recebePoochie
[Link] = nomecria o atributonomepara objeto
e define paraPoochie
-crit1recebe novasCriaturaobjeto
14
Acessando Atributos
classe Critter(object):
...
def falar(self):
print "Oi. Eu sou", [Link], "\n"
...
[Link]()
imprimir [Link]

. Avaliação de atributos usando métodos: falar()


–Usa um Criaturado objetonomeatributo
–Recebe referência ao objeto em si em eu mesmo
. Acessando Atributos Diretamente

Guia de Programação com Python 15


Imprimindo um Objeto (Como?)
classe Critter(object):
...
def __str__(self):
rep = "Critter object\n"
rep += "nome: " + [Link] + "\n"
retornar rep
...
imprimir crit1

. __str__ isum método especial que retorna string


representação de objeto

Guia de Programação com Python (código de exemplo) 16


Mais Duas Métodos Especiais
classe Cachorrinho(object):
def __init__(self):
[Link] = []
[Link] = []

def __setitem__(self, nome, cor):


[Link](nome)
[Link](cor)

def __getitem__(self, nome):


se nome em [Link]:
retornar [Link][[Link](nome)]
senão:
retornar Nenhum

cachorro = Filhote()
dog['Max'] = 'brown'
dog['Ruby'] = 'yellow’
imprimir "Max é", cachorro['Max']
17
Usando Atributos de Classe e Estáticos
Métodos
. Atributo de classe: Um único atributo que é
associado a uma classe em si (não uma instância!)
. Método estático: Um método que está associado a um
classe em si
. O atributo de classe pode ser usado para contar o total
número de objetos instanciados, por exemplo
. Métodos estáticos muitas vezes trabalham com atributos da classe

Guia de Programação com Python 18


Criando um Atributo de Classe
classe Critter(object):
total = 0
. total =0cria atributo de classetotaldefinido para0
. Declaração de atribuição na classe, mas fora do método
cria atributo de classe
. A instrução de atribuição executada apenas uma vez,
quando o Python vê pela primeira vez a definição de classe

. O atributo de classe existe mesmo antes de um único objeto


criado
. Pode usar atributo de classe sem nenhum objeto da classe
em existência

Guia de Programação com Python 19


Acessando um Atributo de Classe
class Critter(object):
total = 0

def status():
print "Total critters", [Link]

status = staticmethod(status)

def __init__(self, nome):


[Link] += 1

imprimir [Link] a aula


imprimir [Link] #a instância
#[Link] += 1 # won’t work;can't assign new value to
um atributo de classe através da instância

20
Criando um Método Estático
classe Critter(object):
...
def status():
print "Total de criaturas", [Link]

status = staticmethod(status)

. status()
É um método estático
–Não tem eu mesmona lista de parâmetros porque método
será invocado através da classe e não do objeto
. staticmethod()
–Função embutida do Python
–Recebe método e retorna método estático
21
Invocando um Método Estático
...
crit1 = Critter("critter 1")
crit2 = Critter("critter 2")
crit3 = Critter("critter 3")

[Link]()

. [Link]()
–Invoca método estático status()definido emBichinho
Imprime uma mensagem afirmando que existem 3 criaturas
–Funciona porque o construtor incrementa a classe
atributototal, questatus()displays
classy_critter.py
Guia de Programação com Python 22
Definindo valores padrão
classe Pessoa(object):
def __init__(self, nome="Tom", idade=20):
[Link] = name
[Link] = age
def conversar(self):
print "Oi, eu sou", [Link]
def __str__(self):
return "Oi, eu sou " + [Link]

one = Person(name="Yuzhen", age = "forever 20")


imprima um

dois = Pessoa()
imprimir dois

Guia de Programação com Python 23


Summary
. A Programação Orientada a Objetos (POO) é uma
metodologia de programação onde novos tipos de
objetos são definidos
. Um objeto é uma única unidade de software que combina
atributos e métodos
. Um atributo é uma "característica" de um objeto; é um
variável associada a um objeto(variável de instância
. Um método é um "comportamento" de um objeto; é um
função associada a um objeto
. Uma classe define os atributos e métodos de um
tipo de objeto

Guia para Programação com Python 24


Resumo (continuação)
. Cada método de instância deve ter um primeiro especial
parâmetro, chamadoeu mesmopor convenção, qual
fornece uma maneira para um método referir-se ao próprio objeto
. Um construtor é um método especial que é
invocado automaticamente logo após um novo objeto ser
criado
. Um atributo de classe é um único atributo que é
associado a uma classe em si
. Um método estático é um método que está associado a
uma aula em si

Guia de Programação com Python 25

Você também pode gostar