Transcrições
1. Introdução à programação orientada ao objeto: Bem-vindo à programação completa
orientada a objetos na masterclass Python. Se você está aprendendo Python
e quer levar suas habilidades de programação
para o próximo nível. E esta aula é para você. Você não precisa de nenhum
conhecimento prévio para começar. Então, para que serve a
programação orientada a objetos? Você pode perguntar, o OOP é usado em ciência da
computação para
implementar estruturas de dados. Também é usado em desenvolvimento
web, bancos de dados, ciência de dados, inteligência
artificial, desenvolvimento de
jogos, interfaces
gráficas de usuário
e muito mais. Nesta classe, você aprenderá
todos os fundamentos da programação orientada a
objetos em Python e os aplicará
para criar aplicativos. Então, vamos começar. Vamos?
2. cursos e objetos: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos dar uma olhada na programação orientada a
objetos
em Python, ou em outras palavras, o p. Com a programação
orientada a objetos, você pode criar suas próprias classes
personalizadas para atender às
suas necessidades e usar essas
classes através de objetos. Então, o que realmente é um objeto? Você ficará surpreso
que você possa estar usando objetos no dia a dia
sem saber. Então, aqui está um exemplo de
objetos que estamos usando diariamente se imprimirmos
o tipo de um inteiro, por exemplo, isso é
o que vamos conseguir. Como você pode ver,
diz número inteiro de classe. Portanto, esse número que digitamos
aqui é um objeto da classe e
semelhante a uma string. A palavra matemática aqui é um
objeto da string de classe. Da mesma forma, quando
criamos uma função, estamos realmente apenas
criando um objeto
dessa classe original chamada
função, por exemplo. Então agora estabelecemos
que a maioria das coisas que
usamos em Python são objetos
de sua própria classe. Então, vamos aprender a criar nossas próprias aulas com suas
próprias funcionalidades. Então, vamos criar uma classe
e sua forma mais simples. É sempre recomendável
colocar em maiúscula a primeira letra
no nome da nossa classe, que neste caso é cat. Se quisermos usar essa classe, temos que criar um
objeto dessa classe. Então c1 é o nome
do objeto e ele está
chamando a classe Cat. E vamos sentar nele e
ver como se parece. Esta classe de gatos quase não faz
nada além da impressão. Eu sou um gato, o que
realmente não é tão útil. Esperamos que nossa classe
leve nomes, idades dos usuários fazem
coisas, etc. É por isso que o
método init entra em jogo. Todas as classes têm um
método chamado init, que sempre é executado quando a classe está
sendo iniciada. Usaremos o
método net para atribuir atributos ou outras operações
necessárias quando
o objeto
estiver sendo criado. Por exemplo, se eu quisesse
criar uma classe de uma pessoa, eu queria ter valores
como nome e idade. Então, definimos uma
classe nomeada pessoa. Agora definimos o método net. Como você pode ver, é
um padrão nas classes que python
grava automaticamente a coisa toda. Para mim, o auto-argumento
é uma referência
à instância atual
da classe e é usado para acessar variáveis de
classe. Agora, vamos adicionar
argumentos à nossa classe. Agora, vamos usar nossa classe
criando um objeto. Como você pode ver quando eu passar o mouse
sobre os parênteses, ele diz que parâmetro, idade
e nome não estão preenchidos. Então, vamos preenchê-los, respectivamente. Lembre-se, é muito
necessário escrever auto ponto antes de atribuir nome e borda de nossas
variáveis. Agora vamos adicionar outro
método à nossa classe, o método que imprime
detalhes sobre a pessoa. Agora que definimos P1, P2 e P3 como um
objeto de nossa classe. Eles podem usar seu
método, obter detalhes. Então, o que acontece se
criarmos um futuro antes sem atribuir as variáveis
necessárias como nome e borda, teremos um erro dizendo que está faltando os dois argumentos
necessários. Então você pode estar perguntando, por que o
método init é tão especial? Por que temos que defini-lo por padrão toda vez
que criamos uma classe? Porque, por natureza, quando
digitamos P é igual a pessoa, esperamos
preencher os detalhes lá imediatamente e, em seguida, usar
qualquer método na classe. Por exemplo, se
comentamos e isso, o que basicamente o torna agora
invisível para o nosso programa, como você pode vê-los agora para
transformar um argumento inesperado. Então, agora temos que criar um método inteiro que recebe
entradas do usuário. Por exemplo, agora teremos que remover
os argumentos e inseri-los através do método de
inserção de detalhes. Agora podemos usar o método
get details. Portanto, não só isso
é confuso para o usuário em todos que estão
lidando com esse código. Também é demorado. E se alguma coisa, as aulas
deveriam fazer era encurtar o tempo
necessário para fazer as coisas. Então, o método net é necessário? Na verdade não, a classe funciona
bem sem ela, mas com certeza ajuda muito. Portanto, esse é o código
sem o método net, e este é o código
que adicionaria método. Então, para recapitular, criamos
a classe chamada Person e demos a ela os seguintes
atributos, nome e idade. Definimos métodos em nossa classe para dar
algumas funcionalidades, como obter detalhes. E então criamos objetos
dessa classe chamados V1, V2, V3, e preenchemos os parâmetros
necessários e usamos o método get
details. Então, vamos tentar outro exemplo. Digamos, por exemplo, criamos
uma aula de cães e gatos, ou eles tomam nome e idade? Então, vamos removê-los. Obviamente, podemos criar um
objeto a partir dessas classes. Se você notar que ambas as classes
são quase idênticas, com a única
diferença é que elas imprimem strings
diferentes. Então, tivemos que escrever
duas vezes quando poderíamos ter
escrito uma classe
geral dos pais que inclui as informações genéticas sobre
cada animal, por exemplo. Mas como vinculamos
essas aulas? Você pode perguntar, como você permite que as aulas de
gatos e cães
herdem atributos
do animal de classe mais geral simplesmente abrindo parênteses e digitando a classe de equilíbrio que
vamos adicionar, neste caso animal. Agora, as classes de gatos e
cães
herdaram o método init
do animal da classe pai, e não precisamos mais
especificá-lo a cada vez. Então, vamos em frente
e removê-los. Agora. Vamos usar nossos métodos e garantir que eles estejam funcionando bem. Portanto, não apenas tornamos nosso código mais curto,
mantendo os mesmos recursos, mas agora podemos adicionar métodos
que se aplicam às aulas de gatos e cães sem
ter que adicioná-los especificamente a gatos e cães,
por exemplo. Agora vamos usar esse
método, cat, por exemplo. Oh, eu esqueci de adicionar um t aqui. Mesmo que não tenhamos definido esse método na classe cat, o cat ainda herda esses métodos de seu animal de classe pai. Então é isso para o básico. No próximo vídeo, analisaremos mais
de perto a herança e os
diferentes tipos dela. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.
3. Herança: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos dar
uma olhada nos tipos de herança e
programação orientada a objetos em Python. Então, por que a herança é
útil e biofilme, ela retrata com precisão as relações
do mundo real. Ele permite a reutilização de código. Não precisamos reescrever o mesmo código
repetidas vezes. Ele nos permite adicionar novos recursos à nossa classe sem
ter que alterá-lo. É de natureza transitiva, o que implica que, se classe B herdar de
outra classe
a, todas essas subclasses herdarão automaticamente da classe a. Com isso em mente,
vamos dê uma olhada em diferentes tipos
de herança, começando com herança
única. Então, digamos, por exemplo, eu queria criar
uma classe country que representasse o Canadá. Eu teria uma
classe de pais chamada Canadá. Agora vamos criar
uma classe infantil que herda do Canadá
chamada Ottawa. Como Ottawa é uma cidade
e parte do Canadá, todos os recursos que forem adicionados ao Canadá devem
ser aplicados automaticamente ao automóvel. Agora vou criar um
objeto da classe infantil Ottawa e usar sua cidade método. Como Auto como uma
classe filho do Canadá, também
posso usar o nome do país do método sem ter
que defini-lo dentro do O2. Então, por exemplo, o segundo
tipo é herança múltipla. E herança múltipla,
as feições de todas as classes base são herdadas na classe
derivada. Então, vamos criar duas
aulas de pais, mãe e pai. Agora, criaremos
um cluster filho herdado dessas duas classes. Agora, vamos criar um objeto da classe sun e usar recursos
de sua classe pai. Como você pode ver,
pudemos usar o nome do
pai e o nome da mãe, mesmo que eles não estivessem
definidos no sol da nossa classe. E isso porque
herdamos esses nomes das duas classes,
mãe e pai. O terceiro tipo é herança
multinível. Herda os recursos de classe base e de classe
derivada para
a classe recém-derivada. Então, vamos ver um exemplo. Observe que em ambas as classes filho
invocamos o construtor
da classe pai. Agora, vamos criar objetos de nossas classes e começar a usá-los. Então, a razão pela qual passamos
três parâmetros é porque a
classe do sol leva três nomes. Como você pode ver, o
código funciona muito bem. Então, o que acontece se removermos invocando o construtor
da classe Avô? Como você pode ver, o código quebra. O quarto tipo é herança
hierárquica. É uma situação em
que a classe balanceada é herdada por
várias subclasses. Agora temos um copo de barões
com duas aulas infantis. Lembre-se, essas duas classes
derivadas podem usar as funções e recursos
da classe de seus pais. No entanto, o filho não pode usar
funções do canal dois. Até agora, tudo bem. Eles podem usar os recursos da classe
dos pais e seus próprios recursos. No entanto, no momento em
que tentamos usar uma função da criança um e criança dois, teremos um erro. E, finalmente, o quinto
tipo, herança híbrida. Neste tipo, recursos de
mais de um tempo de herança são misturados para
formar herança híbrida. Então, vamos ver um exemplo. Agora vamos criar
objetos de nossas classes. Finalmente, vamos ver como
poderíamos juntar tudo isso e criar
um programa de calculadora usando funções de
programação orientadas a
objetos, instruções
f e loops while. Primeiro, vamos criar uma classe de
calculadora para incluir todas as nossas operações
matemáticas. Agora precisaremos
criar um objeto para nossa calculadora de classe para que
possamos começar a usá-lo. Agora vamos criar um
loop while e configurá-lo como true e solicitar que o usuário insira
a operação
matemática desejada. A vantagem de usar o loop
while aqui é que este programa continuará em execução a
menos que o usuário escolha cinco, que neste caso
teremos que fazer uma declaração F dizendo que a escolha F é
igual a cinco, em seguida, quebra,
o que quebrará o loop. De qualquer forma, vamos continuar
com nosso programa e criar uma lógica para ele
usando instruções f. Isso garantirá que o usuário
tenha inserido uma opção válida. Primeiro, vamos verificar se o
usuário quer sair ou não. Caso contrário, vamos
pedir a entrada
do usuário para seguir em frente
com os cálculos. Agora vamos criar uma
instrução F LF para corresponder à sua escolha. Vamos começar adicionando nosso programa e veja
como ele se parece. Então pressionamos F5,
ele deve sair. Mas nosso programa
ainda não é perfeito. Se o usuário inseriu,
a string receberá um erro de valor porque wife e não
conseguiu converter uma
string em um número inteiro. Então, vamos colocar nossas
habilidades de manipulação de
exceções para usar e
lidar com esse adulto. Como você pode ver, isso funciona
lidando com nosso erro, mas não
executa novamente o programa para nós. Para isso, podemos simplesmente
copiar colar o código sob
o bloco exceto para que, quando ele for executado, ele também execute nosso código. Agora, é claro, existem
falhas nesse método. Por exemplo, se o usuário inserir uma string
outra vez, você receberá um erro
porque esperamos que ele manipule a célula apenas uma vez. É aqui que a nova tentativa
entra em jogo, mas não queremos
desviar muito o vídeo. Então, acabamos de configurar isso. Em conclusão, você
realmente não precisa ser limitado por um certo
estilo manuscrito tanto
quanto você deve se concentrar em
manter seu código estruturado. O que significa que você deve seguir
sua própria estrutura que atenda às suas próprias necessidades. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.
4. Métodos estáticos, métodos do curso, atributos do curso: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos dar uma
olhada em métodos estáticos, métodos classe e atributos, começando com atributos de classe. Então, o que são atributos de classe? Um atributo de classe é uma
variável que pertence a uma classe em vez de
um objeto específico. Então, vamos dar um exemplo. Então, agora nós criamos uma classe de animais
simples, então,
irá iniciarmétodo no qual você
passa o nome do animal. Então, vamos criar uma
instância dessa classe. Você pode estar perguntando, o que é essa variável
aqui, número de animais? Bem, este é um atributo de classe. E imediatamente o que o
torna um atributo de classe é que ele não
usa nome próprio. Então, qual é a diferença
entre essa classe, atributo, número de animais e
algo como nome, por exemplo, um nome muda
de instância para instância. Por exemplo, A1 terá
um nome diferente do A2. No entanto, tanto A1
quanto A2 terão o mesmo número de
animais, número de animais. Não
depende de uma instância. Então, por exemplo, tanto que eu poderia
derivar o animal, esses animais, e eu
ainda obteria os mesmos resultados. O que significa que posso acessar esse
atributo de classe a partir da
própria classe sem ter criar uma instância como
esta aqui. Então, agora que
estabelecemos que o número de animais é um atributo de classe que se aplica
a toda a classe. O que podemos fazer com ele? Primeiro, podemos acompanhar quantas instâncias de nosso animal de classe
foram criadas ordem, seja,
quantos animais temos. Por exemplo, observe
que usamos o animal não mesmo, caso contrário, teria nos
dado resultados diferentes. Então essa é a ideia básica
por trás dos atributos de classe. Há alguns usuários
para eles, é claro, como poder
definir uma constante que você deseja usar para qualquer
instância dessa classe. Então, por exemplo, você
teve uma aula de física com Lightspeed obviamente
sendo uma constante. Em vez de
defini-lo fora da sua classe como uma variável global. Em vez disso, você pode
defini-lo dentro da sua classe como um
atributo de classe para que você possa
acessá-lo mais facilmente. Então, por que isso é uma abordagem
melhor? Sempre queremos garantir que suas aulas sejam tão
independentes quanto possível. Ou seja, se você usasse essa classe
em outro lugar em algum momento, ela tem todos os seus
métodos e variáveis predefinidos dentro dela e prontos para serem usados em outro lugar. É assim que você pode usar atributos de
classe a
seu favor,
criando qualquer variável que você possa precisar dentro da classe, em vez de criá-la
fora como uma variável global. Agora vamos falar sobre métodos de
classe. Então lembre-se de como
incrementamos um número de animais aqui. Toda vez que uma instância do animal de
classe foi criada, podemos fazer isso um pouco
definitivamente usando o método de classe. Então, vamos criar um método de classe
e ver como ele se parece. Como você pode ver, usamos
TLS em vez de si mesmo. Agora vamos devolver
o número de animais. O que também precisamos
fazer é usar um decorador de classe para denotar que este é realmente
um método de classe. Então, agora criamos um método de classe que retorna
o número de animais. Precisamos de um
método de classe que adicione mais um depois que um animal ou
uma instância for criado. Então, vamos criar
outro método de classe. Então, como podemos usar o método da classe Add
animals? Por exemplo, podemos remover
animal esse número de animais do nosso método init e substituí-lo por animais ad. Agora, o que
isso fará é chamar o método de classe adicionar
animais todas as vezes. E foi chamado, o que significa que
toda vez que uma instância do animal de classe
tiver criado como A1, A2, ele usará o
método de classe e os animais. Então, vamos ver se
isso funciona usando o método de classe
num animals,
ele deve retornar. Então, foram métodos de classe. Vamos dar uma
olhada nos métodos estáticos. Aqui estão algumas das
características dos métodos estáticos. Primeiro, está vinculado à classe. Ele não pode modificar um estado de
classe ou objeto e não pode acessar ou modificar a classe e suas variáveis de
instância. Então, às vezes, quando estamos
criando um programa de calculadora, tendemos a definir métodos como você poderia definir esses métodos dentro de uma classe e tê-los como métodos estáticos. Então, por exemplo, agora podemos usar o decorador de
classe para denotar que este é
um método estático. Para usar esses métodos, em vez de criar uma instância
da calculadora de classes, poderíamos acessá-los
imediatamente usando a calculadora. Portanto, para esses métodos, não
preciso criar uma instância da
calculadora de classes como essa. E, em seguida, use C1. Oh, desculpe. Eu poderia usar a calculadora imediatamente sem ter
que criar uma instância. Concordo que alguns
podem dizer: Bem, você poderia ter definido esses
métodos globalmente e usado anúncio imediatamente em vez de
calculadora, como por exemplo. Existem algumas
complicações nisso. E é principalmente
para manter seu código mais estruturado e organizado. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.
5. Cursos de importação: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos dar uma
olhada em diferentes métodos. Você pode importar classes
até o programa, começando com o método mais
simples no qual o arquivo ou classe que você está importando está dentro do espaço de trabalho ou diretório. Então aqui temos dois
arquivos Python, men e test. Ambos estão no
mesmo diretório. Então, temos uma classe, um teste essa torta que
queremos usar em main.py. Então, como você pode ver, test.py
tem uma classe chamada calculadora e
queremos importar isso. E para comprar, para fazer isso,
faremos o seguinte. Primeiro, importaremos
o nome do arquivo. Nesse caso, é teste. Então, vamos em frente
e abortar o teste. Em seguida, para usar a classe, assim como qualquer outra classe, você terá que
criar uma instância de um objeto dessa classe. Então, vamos criar uma
instância de teste. Como você pode ver quando eu digito ponto, isso me mostra que há
uma classe chamada calculadora que devo escolher
para começar a usá-lo. Então, vamos escolher a calculadora. Agora, assim como qualquer instância, podemos seguir em frente e usar seus
métodos e atributos. Como você pode ver,
funciona muito bem. Observe que tive que digitar o nome
do arquivo que é teste
e, em seguida, escolher uma determinada classe dentro desse arquivo,
que tem calculadora. Isso significa que eu poderia ter
várias classes dentro do arquivo de teste que eu poderia
escolher. Por exemplo. Agora vamos usar a aula de física. Então isso pressupõe que
a classe que estamos importando esteja dentro do
nosso diretório. O que acontece se eu quiser
importar um arquivo na
classe na minha área de trabalho,
por exemplo. Para fazer isso,
primeiro importaremos o sucesso. Em seguida, vamos digitar o caminho do ponto CIS. Em seguida, digitaremos o local do arquivo que importaremos. Podemos saber a
localização do phi indo para
o arquivo em si. Clique com o botão direito do mouse e
clique em Propriedades. Agora vamos importar
o arquivo em si, que é o arquivo de teste. Agora, para começar a usá-lo como qualquer classe, precisamos
criar uma instância dela. Então eu importei a
matemática da classe e uso o método add para saber qual classe e
métodos temos em nosso arquivo. Simplesmente podemos
abri-lo usando o Bloco de Notas. Então, o que fizemos é importante. Em seguida, o arquivo de teste final criou uma instância da
matemática da classe por meio do arquivo de teste. Em seguida, usamos o método
add dentro dessa classe. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.