Métodos em Python: um conceito chave da programação orientada a objetos

Conteúdo

Visão geral

  • Los métodos en Python son un concepto crucial para entender como programador y profesional de la ciencia de datos.
  • Aqui, hablaremos sobre estos diferentes tipos de métodos en Python y cómo implementar el

Introdução

Python es un lenguaje maravilloso, pero puede resultar abrumador para un principiante dominarlo. Como cualquier lenguaje hablado, Python requiere que primero comprendamos los conceptos básicos antes de poder saltar a la construcción de aplicaciones más diversas y más amplias en el campo de la ciencia de datos.

Aqui está a questão: si cubre bien sus conceptos básicos, encontrará que Python es muy sencillo. Pero es crucial dedicar el tiempo de aprendizaje inicial a familiarizarse con las funciones que ofrece Python. ¡Realmente valdrá la pena a largo plazo!

types-of-methods-in-python-9192148

Python es, claro, un lenguaje de programación orientada a objetos (OOP). Este es un concepto amplio y no es posible comprenderlo de una vez. De fato, dominar la programación orientada a objetos puede llevar varios meses o incluso años. Depende totalmente de su capacidad de comprensión. Recomiendo encarecidamente leer primero mi artículo anterior sobre los 'Conceptos básicos de la programación orientada a objetos'.

Então, en este artículo en particular, expandiré más el concepto de métodos en Programación Orientada a Objetos. Hablaremos sobre los diferentes tipos de métodos en Python. Dado que los métodos de Python pueden ser confusos a veces si es nuevo en OOP, cubriré los métodos en Python y sus tipos en detalle en este artículo. E depois veremos os casos de uso destes métodos.

Mas espera, o que são os métodos em Python? Nós vamos, vamos começar e descobrir!

Se você é completamente novo em Python, deveria verificar isto curso gratuito de Python que lhe ensinará tudo o que precisa para começar no mundo da ciência de dados.

Tabela de conteúdo

  • Quais são os métodos em Python?
  • Tipos de métodos em Python
    • Métodos de instância
    • Métodos de classe
    • Métodos estáticos
  • Quando usar Que tipo de método em Python?

Quais são os métodos em Python?

A grande questão!

Em Programação Orientada a Objetos, temos objetos (tambores, por favor, por favor). Estes objetos consistem em propriedades e comportamentos. O que mais, as propriedades do objeto são definidas pelos atributos e o comportamento é definido por métodos. Estes métodos são definidos dentro de uma classe. Estos métodos son el fragmento de código reutilizable que se puede invocar / llamar en cualquier punto del programa.

Python ofrece varios tipos de estos métodos. Estos son cruciales para convertirse en un programador eficiente y, em consequência, son útiles para un profesional de la ciencia de datos.

Tipos de métodos em Python

Basicamente, existen tres tipos de métodos en Python:

  • Método de instancia
  • Método de clase
  • Método estático

Hablemos de cada método en detalle.

Métodos de instância

El propósito de los métodos de instancia es establecer u obtener detalles sobre instancias (objetos), y es por eso que se conocen como métodos de instancia. Son el tipo de método más común que se usa en una clase de Python.

Tienen un parámetro predeterminado: um mesmo, que apunta a una instancia de la clase. Embora não seja necessário passar isso o tempo todo. Pode alterar o nome deste parâmetro, mas é melhor seguir a convenção, quer dizer um mesmo.

Qualquer método que criar dentro de uma classe é um método de instância a menos que Python especifique de forma especial o contrário. Vamos ver como criar um método de instância:

class My_class:
  def instance_method(auto):
    Retorna "Este é um método de instância."

É tão simples quanto isso!

Para chamar um método de instância, deve criar um objeto / instância da classe. Com a ajuda deste objeto, pode aceder a qualquer método da classe.

obj = My_class()
obj.instance_method()

screenshot-from-2020-10-19-10-03-00-3996945

Quando o método de instância é chamado, Python substitui o um mesmo argumento pelo objeto de instância, Obj. É por isso que devemos adicionar um parâmetro padrão ao definir os métodos de instância. Note que quando método_instância () se chama, não é necessário passar a si mesmo. O Python faz isso por si.

Junto com o parâmetro padrão self, também pode adicionar outros parametros de sua escolha:

class My_class:

  def instance_method(auto, uma):
    retorno f"Este é um método de instância com um parâmetro a = {uma}."

Temos um parâmetro adicional “uma” aqui. Agora vamos criar o objeto da classe e chamar este método de instância:

obj = My_class()
obj.instance_method(10)

captura-de-ecrã-de-2020-10-19-10-05-07-6742157

Novamente, pode ver que não passámos 'self'’ como um argumento, O Python faz isso por nós. Mas é necessário mencionar outros argumentos, neste caso, é apenas um. Então passámos 10 como valor de “uma”.

Pode usar “auto” dentro de um método de instância para aceder a outros atributos e métodos da mesma classe:

class My_class:

  def __init__(auto, uma, b):
    self.a = a
    self.b = b

  def instance_method(auto):
    retorno f"This is the instance method and it can access the variables a = {self.a} and
 b = {self.b} with the help of self."

Observação que el método __init __ () es un tipo especial de método conocido como constructor. Este método se llama cuando se crea un objeto a partir de la clase y permite que la clase inicialice los atributos de una clase.

obj = My_class(2,4)
obj.instance_method()

screenshot-from-2020-10-19-10-06-26-6642977

Probemos este código en la ventana de codificación en vivo a continuación.

Con la ayuda de la palabra clave “self” self.a y self.b, hemos accedido a las variables presentes en el método __init __ () de la misma clase.

Junto con los objetos de una clase, un método de instancia puede acceder a la propia clase con la ayuda de yo .__ classe__ atributo. Vamos ver como:

class My_class():

  def instance_method(auto):
    imprimir("Olá! de %s" % self.__class__.__name__)

obj = My_class()
obj.instance_method()

captura-de-ecrã-de-2020-10-19-10-08-29-4298856

O atributo self.__class__.__name__ devolve o nome da classe com a qual a instância da classe está relacionada (auto).

2. Métodos de classe

O objetivo dos métodos da classe é definir ou obter os detalhes (Estado) da classe. Por isso são conhecidos como métodos de classe. Não podem aceder nem modificar dados específicos de instância. Estão ligados à classe em vez de aos seus objetos. Duas coisas importantes sobre os métodos de classe:

  • Para definir um método de classe, deve especificar que é um método de classe com a ajuda do decorator @classmethod
  • Os métodos de classe também recebem um parâmetro por defeito: cls, que aponta para a classe. Novamente, esto no es obligatorio para nombrar el parámetro predeterminado “cls”. Pero siempre es mejor ir con las convenciones

Ahora veamos cómo crear métodos de clase:

class My_class:

  @classmethod
  def class_method(cls):
    Retorna "This is a class method."

¡Tan simple como eso!

Como disse anteriormente, con la ayuda de la instancia de la clase, puede acceder a cualquier método. Así que crearemos la instancia de este My_class también e intentaremos llamar a este class_method ():

obj = My_class()
obj.class_method()

screenshot-from-2020-10-19-10-09-19-4759548

¡Esto también funciona! Podemos acceder a los métodos de la clase con la ayuda de una instancia / objeto de clase. Pero podemos acceder a los métodos de la clase diretamente sin crear una instancia u objeto de la clase. Vamos ver como:

screenshot-from-2020-10-19-10-09-19-4759548

Sin crear una instancia de la clase, puede llamar al método de la clase con – Cnome_classe.nome_método ().

Mas isso não é possível com métodos de instância, onde precisamos criar uma instância da classe para chamar os métodos de instância. Vamos ver o que acontece quando tentamos chamar diretamente o método de instância:

Minha_classe.metodo_de_instancia()

captura-de-ecrã-de-2020-10-19-10-11-15-9970810

Temos um erro que indica que falta um argumento posicional: “mim”. E é óbvio porque os métodos de instância aceitam uma instância da classe como parâmetro padrão. E não fornece nenhuma instância como argumento. Embora isso possa ignorar o nome do objeto como argumento:

Minha_classe.metodo_de_instancia(Obj)

screenshot-from-2020-10-19-10-03-00-3996945

Impressionante!

3. Métodos estáticos

Os métodos estáticos não podem aceder aos dados da classe. Em outras palavras, não precisam aceder aos dados da classe. São autónomos e podem trabalhar sozinhos. Dado que no están adjuntos a ningún atributo de clase, no pueden obtener ni establecer el estado de la instancia o el estado de la clase.

Para definir un método estático, podemos usar el decorador @staticmethod (de manera similar usamos el decorador @classmethod). A diferencia de los métodos de instancia y de clase, no necesitamos pasar ningún parámetro especial o predeterminado. Veamos la implementación:

class My_class:

  @staticmethod
  def static_method():
    Retorna "Este é um método estático."

¡Y hecho!

Tenga en cuenta que no tenemos ningún parámetro predeterminado en este caso. Contudo, ¿cómo llamamos a los métodos estáticos? Novamente, podemos llamarlos usando el objeto / instancia de la clase como:

obj = My_class()
obj.static_method()

screenshot-from-2020-10-19-10-13-22-4953073

Y podemos llamar a métodos estáticos diretamente, sin crear un objeto / instância da classe:

screenshot-from-2020-10-19-10-13-22-4953073

Puede notar que la salida es la misma usando ambas formas de llamar a métodos estáticos.

Aquí hay un resumen de la explicación que hemos visto:

    • Un método de instancia conoce su instancia (y a partir de eso, su clase)
    • Un método de clase conoce su clase
    • Un método estático no conoce su clase o instancia

¿Cuándo usar qué método de Python?

Los métodos de instancia son los métodos más utilizados. Mesmo assim, es difícil saber cuándo puede utilizar métodos de clase o métodos estáticos. La siguiente explicación saciará tu curiosidad:

Método de claseEl uso más común de los métodos de clase es para crear métodos de fábrica. Los métodos de fábrica son aquellos métodos que devuelven un objeto de clase (como un constructor) para diferentes casos de uso. Entendamos esto usando el ejemplo dado:

from datetime import date

class Dog:
  def __init__(auto, nome, era):
    self.name = name
    self.age = age

# um método de classe para criar um objeto Dog com ano de nascimento.
  @classmethod
  def Year(cls, nome, ano):
    return cls(nome, date.today().ano - ano)

Aqui, como você pode ver, el método de clase está modificando el estado de la clase. Si tenemos el año de nacimiento de cualquier perro en lugar de la edad, entonces con la ayuda de este método podemos modificar los atributos de la clase.

Revisemos esto:

Dog1 = Dog('Bruno', 1)
Dog1.name , Dog1.age
screenshot-from-2020-10-19-10-14-14-4460244

Aquí hemos construido un objeto de la clase. Esto toma el nombre y la edad de dos parámetros. Al imprimir los atributos de la clase obtenemos Bruno y 1 como uma saída, que fueron los valores que proporcionamos.

Cão2 = Cão.Ano('Dobby', 2017)
Dog2.name , Dog2.age

screenshot-from-2020-10-19-10-15-07-9260481

Aqui, hemos construido otro objeto de la clase Perro usando el método de la clase. Ano(). El método Year () toma la clase Person como primer parámetro cls y devuelve el constructor llamando cls (Nome, fecha.today (). ano – ano), que es equivalente a Perro (Nome, fecha.hoy (). Ano – ano).

Como puede ver al imprimir el nombre de los atributos y la edad, obtuvimos el nombre que proporcionamos y la edad convertida del año de nacimiento utilizando el método de clase.

Método estáticoSe utilizan para crear funciones de utilidad. Para realizar las tareas de programación de rutina, utilizamos funciones de utilidad. Un ejemplo simple podría ser:

class Calculator:
 
  @staticmethod
  def add(x, e):
    retornar x + y

print('The sum is:', Calculator.add(15, 10))

screenshot-from-2020-10-19-10-15-47-8126031

Puede ver que el caso de uso de este método estático es muy claro, sumando los dos números dados como parámetros. Siempre que tenga que sumar dos números, puede llamar a este método diretamente sin preocuparse por la construcción del objeto.

Notas finais

Neste artigo, aprendimos sobre los métodos de Python, los tipos de métodos y vimos cómo implementar cada método.

Te recomiendo que revises estos recursos sobre programación orientada a objetos:

Avíseme en la sección de comentarios a continuación si tiene alguna pregunta o comentario. Boa aprendizagem!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker