Cómo programar orientado a objetos en Python
Aunque Python es un lenguaje interpretado, está orientado a objetos y puede realizar programación de objetos. Aprendamos a hacer programación de objetos en Python.
1. Cómo definir una clase
Antes de hacer programación orientada a objetos en Python, primero comprendamos algunos términos: clase, objeto de clase, objeto de instancia, atributos, funciones y métodos. .
1. Qué es la orientación a objetos
La orientación a objetos (oop) es un método abstracto para comprender el mundo. Todo en el mundo se puede abstraer en un objeto, y todo es. hecho de compuesto de objetos. Aplicado en programación, es un método de desarrollo de programas que utiliza objetos como unidad básica del programa.
2. La diferencia entre orientado a objetos y orientado a procesos
Hemos introducido la orientación a procesos antes. El núcleo de la orientación a procesos es la palabra "proceso", y proceso es. los pasos para resolver problemas Diseñar un programa utilizando un enfoque orientado a procesos es como diseñar una línea de ensamblaje, que es una forma de pensar mecánica
Ventajas: los problemas complejos se simplifican y agilizan
Los principales escenarios de aplicación son: kernel de Linux, git y servicio http
Programación orientada a objetos, el núcleo es el objeto y el objeto es la combinación de características (variables) y habilidades (funciones) del cuerpo.
Ventajas: resuelve el problema de la mala escalabilidad del programa
Desventajas: mala capacidad de control, incapaz de predecir el resultado final
El escenario de aplicación principal es el software que cambia con frecuencia. necesidades, es decir, software que interactúa frecuentemente con los usuarios
Cabe señalar que la programación orientada a objetos no puede resolver todos los problemas, solo se utiliza para resolver la escalabilidad.
Por supuesto, en el software de Internet actual, la escalabilidad es lo más importante
3 Los conceptos de objetos y clases
En Python, todo es un objeto y un objeto debe tener el suyo propio. atributos, es decir, características, y tienen sus propias funciones, es decir, métodos.
En Python, las características están representadas por variables y las funciones están representadas por funciones, por lo que el objeto es una combinación de variables y. funciones
Las clases se extraen de varios objetos con las mismas características y funciones, por lo que una clase es una combinación de una serie de objetos con las mismas características y funciones
Definamos una clase El método es algo similar a definir una función:
#Definir una clase de chino class Chino:#***Mismas características country='China'#***Mismas habilidades def talk(self):print. ('está hablando chino')def eat(self):print('está comiendo comida china')De esta manera, hemos definido una clase Nota: 1. Utilice la palabra clave class para definir una clase p>
3 A diferencia de las funciones, las clases ejecutarán el código de la clase durante la definición. fase
4. Las clases tienen dos atributos, las características más diferentes se llaman atributos de datos y las funciones más diferentes se llaman atributos de función
¿Cómo generar un objeto a partir de esta clase? Creación de instancias:
p1=Chinese()
p2=Chinese() Podemos sacar la conclusión de que no importa lo que suceda en el mundo real, en el programa, lo primero son los objetos. solo existen en clases
Hemos obtenido dos objetos mediante instanciación, pero hay un problema. Las características y funciones de los dos objetos obtenidos son las mismas. Todo es un objeto. ser así:
#Definir una clase de chino chino:#***Las mismas características país='China'#Inicialización def __init__(self,nombre,edad):
self.name=nombre #Cada objeto tiene su propio nombre self.age=age #Cada objeto tiene su propia edad #***Las mismas habilidades def talk(self):print('está hablando en chino')def eat(self): print('está comiendo comida china')#El método de creación de instancias genera un objeto p1=Chinese('zhang',18) El nombre de la clase más paréntesis es la creación de instancias, y la creación de instancias activará automáticamente la ejecución de la función __init__, que se puede utilizar para personalizar sus propias características para cada objeto
Cuando definimos la función __init__, hay tres parámetros entre paréntesis, pero cuando instanciamos la llamada Solo se pasan dos valores, ¿por qué no se informa ningún error? Esto se debe a que la función de self es pasar automáticamente el objeto en sí al primer parámetro de la función __init__ al crear una instancia. Por supuesto, self es solo un nombre. El maestro egon dijo que si lo escribes a ciegas, otros no podrán. para entenderlo.
Atención.
Este mecanismo de transferencia automática de valores solo se refleja cuando se crea una instancia. Además de la creación de instancias, una clase también tiene la función de referencia de atributo. El método es el nombre de la clase. Atributo
#Referenciar el atributo de datos de la clase. (Chinese.country) #China#Atributo de función de la clase de referencia# Chinese.talk()#TypeError: a talk() le falta 1 argumento posicional requerido: 'self'print(Chinese.talk) # Hemos aprendido el concepto de espacio de nombres. Definir una variable o definir una función abrirá un espacio de memoria en la memoria. También hay variables definidas (atributos de datos) y funciones (atributos de función) en la clase. También tienen nombres. El espacio se puede ver mediante el método .__dict__ p1=Chinese('zhang',18)print(Chinese.__dict__)#{'__module__': '__main__', '. country': 'China', '__init__': Hay otro problema: no hay ningún atributo de función en el espacio de nombres del objeto. Por supuesto, también puedes buscarlo en la clase. , pero ¿las funciones especificadas por diferentes objetos son la misma función p1=Chinese('zhang',18) p2=Chinese('li',19)print(Chinese. hablar)# Y preste atención al método vinculado, que es un método vinculante. El objeto en sí solo tiene atributos de datos, pero el mecanismo de clase de Python también vincula las funciones de la clase al objeto, que se llama método del objeto o enlace. método. El método de vinculación solo vincula un objeto. Los métodos de la misma clase están vinculados a diferentes objetos y pertenecen a diferentes métodos. Podemos verificarlo: Al usar esta función: la clase llama al atributo de la función. Como es una función, el nombre de la función se agrega entre paréntesis, y si hay parámetros, se pasan los parámetros. p> Y el objeto usa Al llegar a esta función, el objeto no tiene atributos de función. Es un método de enlace. ¿Cómo usar el método de enlace? También agrega paréntesis directamente, pero la diferencia es que se usará el método de enlace. el objeto en sí como primer parámetro por defecto class Chinese: country='China'def __init__(self,name,age): self. nombre=nombre self.age =edad def talk(self):print('%s está hablando chino'%self.name)def eat(self):print('está comiendo comida china') p1=Chinese('zhang ',18) p2=Chinese('li',19) Chinese.talk(p1) #zhang es hablando chinop1.talk() #zhang habla chino siempre que sea ¡El método de enlace pasará automáticamente el valor! De hecho, nos hemos encontrado con esto antes. En Python3, los tipos son clases. Los tipos de datos como list, tuple, set y dict son en realidad clases. Los métodos que usamos antes son como l1.append(3), pero también podemos escribirlo así: l1.append(l1,3) Continuará. .