[Aprender python desde cero] 40.método mágico de python (1)

metodo magico

Hay un método en Python llamado método mágico. Los métodos proporcionados en las clases de Python que comienzan con dos guiones bajos y terminan con dos guiones bajos son métodos mágicos. Los métodos mágicos se activarán y ejecutarán automáticamente cuando corresponda.

Dos características del método mágico:

  • Dos guiones bajos en cada lado;
  • El nombre "hechizo" ha sido definido oficialmente por Python, no podemos escribirlo al azar.

1. __init__Método

__init__()método, que se llama de forma predeterminada cuando se crea un objeto y no es necesario llamarlo manualmente. Durante el desarrollo, si desea establecer las propiedades del objeto mientras crea el objeto, puede __init__modificar el método.

class Cat:
"""这是一个猫类"""
    def __init__(self,name):  # 重写了 `__init__` 魔法方法
        self.name = name

    def eat(self):
        return "%s爱吃鱼"%self.name
    def drink(self):
        return '%s爱喝水'%self.name

"""
tom = Cat()
TypeError: __init__() missing 1 required positional argument: 'name'
这种写法在运行时会直接报错!因为 `__init__` 方法里要求在创建对象时,必须要传递 name 属性,如果不传入会直接报错!
"""

tom = Cat("Tom")  # 创建对象时,必须要指定 name 属性的值
tom.eat()   # tom爱吃鱼

Aviso:

  • __init__()El método se llamará de forma predeterminada cuando se cree el objeto y no es necesario llamar a este método manualmente.
  • __init__()Los parámetros en el método selfno necesitan pasar parámetros al crear un objeto, y el intérprete de python le asignará directamente la referencia del objeto creado self.
  • Dentro de la clase, puede usar selfatributos y métodos de llamada; fuera de la clase, debe usar el nombre del objeto para usar atributos y métodos de llamada.
  • Si hay varios objetos, los atributos de cada objeto se almacenan por separado y tienen sus propias direcciones independientes.
  • El método es compartido por todos los objetos y solo ocupa un espacio de memoria. Cuando se llama al método, se utilizará para selfdeterminar qué objeto llamó al método de instancia.

2. __del__Método

Una vez que se crea el objeto, el intérprete de Python llama __init__()al método de forma predeterminada; y cuando se elimina el objeto, el intérprete de Python también llama a un método de forma predeterminada, que es el método __del__().

class Student:
    def __init__(self,name,score):
        print('__init__方法被调用了')
        self.name = name
        self.score = score

    def __del__(self):
        print('__del__方法被调用了')

s = Student('lisi',95)
del s
input('请输入内容')

3. __str__Método

__str__El método devuelve la información de descripción del objeto. print()Cuando la función se usa para imprimir el objeto, el método del objeto en realidad se llama __str__.

class Cat:
    def __init__(self,name,color):
        self.name = name
        self.color = color

tom = Cat('Tom','white')

# 使用 print 方法打印对象时,会调用对象的 __str__ 方法,默认会打印类名和对象的地址名
print(tom)   # `<__main__.Cat object at 0x0000021BE3B9C940>`

Si desea modificar la salida del objeto, puede anular __str__el método.

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        return '哈哈'

p  = Person('张三',18)
print(p)   # 哈哈  打印对象时,会自动调用对象的 `__str__` 方法

En general, cuando imprimimos un objeto, es posible que necesitemos enumerar todas las propiedades del objeto.

class Student:
    def __init__(self,name,score):
        self.name = name
        self.score = score
    def __str__(self):
        return '姓名是:{},成绩是{}分'.format(self.name,self.score)

s = Student('lisi',95)
print(s)   # 姓名是:lisi,成绩是95分

4. __repr__Método

__repr__La función del método __str__es similar a la del método, y ambos se utilizan para modificar el contenido de impresión predeterminado de un objeto. Al imprimir un objeto, si __str__el método no se anula, automáticamente buscará __repr__el método. Si ninguno de estos dos métodos está disponible, la dirección de memoria del objeto se imprimirá directamente.

class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def __repr__(self):
        return 'helllo'


class Person:
    def __repr__(self):
        return 'hi'

    def __str__(self):
        return 'good'


s = Student('lisi', 95)
print(s)  # hello

p = Person()
print(p)  # good

5. __call__Método

Agregue paréntesis después del objeto para desencadenar la ejecución.

class Foo:
    def __init__(self):
        pass

    def __call__(self, *args, **kwargs):
        print('__call__')


obj = Foo()  # 执行 `__init__`
obj()  # 执行 `__call__`

Resumir:

  • Cuando se crea un objeto, __init__el método se llama automáticamente y cuando se elimina un objeto, __del__el método se llama automáticamente.
  • Usando __str__los métodos y __repr__, ambos modifican el resultado de convertir un objeto en una cadena. En general, __str__el resultado de un método tiene más que ver con la legibilidad, y __repr__el resultado de un método tiene más que ver con la corrección (por ejemplo: la clase de fecha y hora en el módulo de fecha y hora).

Caso avanzado

[Python] Python se da cuenta del juego de adivinanzas: ¡desafía tu inteligencia y tu suerte!

[python] La biblioteca Python tkinter implementa un programa GUI para el convertidor de unidades de peso

[python] Use Selenium para obtener entradas (2023 Blog Star)

[python] Use Selenium y Chrome WebDriver para obtener información de artículos en [Tencent Cloud Studio Practical Training Camp]

Use el estudio Tencent Cloud Cloud para realizar la programación Baidu AI para realizar el reconocimiento de texto

[Diversión con la serie Python [Xiaobai debe ver] Rastreador de subprocesos múltiples de Python: descargue imágenes de sitios web de paquetes de emoticonos

[Serie Juega con Python] [Imprescindible para Xiaobai] Usa Python para rastrear datos históricos de Shuangseqiu y analizarlos visualmente

[Jugar con la serie python] [Imprescindible para Xiaobai] Utilice la tecnología de rastreo de Python para obtener una IP proxy y guardarla en un archivo

[Imprescindible para Xiaobai] Ejemplo de síntesis de imágenes de Python usando la biblioteca PIL para realizar la síntesis de múltiples imágenes por rangos y columnas

[Xiaobai debe ver] El combate real del rastreador de Python descarga imágenes de diosas en lotes y las guarda localmente

[Xiaobai debe ver] Análisis detallado del generador de nube de palabras de Python e implementación de código

[Xiaobai debe ver] Python rastrea un ejemplo de datos de jugadores de la NBA

[Imprescindible para Xiaobai] Código de muestra para rastrear y guardar audio del Himalaya usando Python

[Imprescindible para Xiaobai] Realización técnica del uso de Python para descargar imágenes de piel de League of Legends en lotes

[Xiaobai debe ver] Visualización y procesamiento de datos del rastreador de Python

[Imprescindible para Xiaobai] Programa rastreador de Python para obtener fácilmente imágenes de piel de héroe de King of Glory

[Imprescindible para Xiaobai] Use Python para generar una lista personalizada de documentos de Word

[Imprescindible para Xiaobai] Combate de rastreadores de Python: obtenga imágenes del sitio web de Onmyoji y guárdelas automáticamente

Xiaobai debe ver la serie de sistemas de gestión de bibliotecas: código de muestra para las funciones de inicio de sesión y registro

100 casos del combate real de Xiaobai: un programa completo y simple de sentencia ganadora de la lotería Shuangseqiu, adecuado para los primeros pasos de Xiaobai

Procesamiento y visualización de datos geoespaciales usando geopandas y shapely (.shp)

Utilice selenio para rastrear los datos de la lista de películas de Maoyan

Explicación detallada del principio y la implementación del algoritmo de mejora de imagen Retinex

Guía de introducción a los rastreadores (8): Escriba programas rastreadores de datos meteorológicos para el análisis visual

Guía introductoria a los rastreadores (7): Uso de Selenium y BeautifulSoup para rastrear la película Douban Top250 Ejemplo de explicación [Reptile Xiaobai must watch]

Guía de inicio de rastreadores (6): Anti-rastreadores y habilidades avanzadas: proxy de IP, disfraz de agente de usuario, verificación de inicio de sesión de omisión de cookies y herramientas de identificación de código de verificación

Guía introductoria a los rastreadores (5): rastreadores distribuidos y control de concurrencia [Métodos de implementación para mejorar la eficiencia del rastreo y el control de la racionalidad de las solicitudes]

Introducción a los rastreadores (4): la mejor forma de rastrear páginas web dinámicas con Selenium y API

Guía de introducción a los rastreadores (3): solicitudes de red de Python y estrategias comunes contra los rastreadores

Introducción a los rastreadores (2): cómo utilizar expresiones regulares para la extracción y el procesamiento de datos

Primeros pasos con los reptiles (1): aprenda los conceptos básicos y las habilidades de los reptiles

Aplicación del modelo de aprendizaje profundo en el reconocimiento de imágenes: práctica de conjuntos de datos CIFAR-10 y análisis de precisión

Conceptos básicos de programación orientada a objetos de Python y código de muestra

Guía de operación de la base de datos MySQL: aprenda a usar Python para agregar, eliminar, modificar y consultar operaciones

Guía de operación de archivos de Python: codificación, lectura, escritura y manejo de excepciones

Utilice Python y Selenium para automatizar el rastreo#【Convocatoria especial para el Festival del Bote del Dragón】Explore la última tecnología, y el futuro será gracias a usted"Zong" #Artículos contribuidos

Tutorial multihilo y multiproceso de Python: análisis completo, casos de código y habilidades de optimización

Conjunto de herramientas de automatización de Selenium - Guía completa y tutoriales

Tutorial de los conceptos básicos del rastreador web de Python avanzados al combate real

Tutorial introductorio de Python: domine los conocimientos básicos de for loop, while loop, operación de cadenas, lectura y escritura de archivos y manejo de excepciones

Tutorial de procesamiento y análisis de datos de Pandas: desde lo básico hasta el combate real

Explicación detallada de los tipos de datos de uso común y las operaciones relacionadas en Python

[Último en 2023] Explicación detallada de seis esquemas principales para mejorar el modelo de índice de clasificación

Introducción a los conceptos básicos y habilidades avanzadas de programación de Python, desarrollo web, análisis de datos y aprendizaje automático e inteligencia artificial

Gráfico de resultados de predicción con 4 métodos de regresión: regresión vectorial, regresión de bosque aleatorio, regresión lineal, regresión de vecinos más cercanos K

Supongo que te gusta

Origin blog.csdn.net/qq_33681891/article/details/132355786
Recomendado
Clasificación