Ejemplos de código sobre cómo vincular propiedades y métodos entre clases e instancias en Python
He estado aprendiendo Python recientemente, simplemente como un pasatiempo. Sin embargo, no he leído sistemáticamente libros de programación de Python. Siento que la descripción anterior es demasiado engorrosa, así que encontré algunos sitios web de aprendizaje en el sitio web. El siguiente artículo es principalmente para Hemos introducido información relevante sobre cómo vincular atributos y métodos entre clases e instancias en Python. Los amigos que lo necesiten pueden consultarlo.
Prólogo
Me siento confundido al llamar a métodos de clases e instancias de Python. Después de pensarlo, registraré mis pensamientos para profundizar mi comprensión y consolidar mi memoria. Quienes quieran aprender Python comprenden este lenguaje abstracto. Dado que Python es un lenguaje dinámico, las clases e instancias creadas en base a clases pueden vincularse arbitrariamente a atributos y métodos, que se presentan a continuación.
1. Atributos de enlace de clase
Los atributos de enlace de clase se pueden definir directamente en la clase, que son atributos genéricos.
clase Estudiante(objeto):
Aunque el atributo nombre = 'Estudiante' está clasificado como propiedad, todas las instancias de la clase pueden acceder a él.
clase Estudiante(objeto):
nombre = 'Estudiante'
s = Estudiante() # Crear instancia s
print( s.name) # Imprime el atributo de nombre Debido a que la instancia no tiene un atributo de nombre, continuará buscando el atributo de nombre de la clase
print(Student.name) # Imprime el atributo de nombre. de la clase
Estudiante
Si Estudiante modifica el valor de s.name en este momento, se producirán los siguientes resultados:
s.name = 'xiaoming ' # Vincula el atributo de nombre a la instancia
print(s.name) # Dado que el atributo de instancia tiene una prioridad más alta que el atributo de clase, bloqueará el atributo de nombre de la clase
print(Student.name) # Pero el atributo de clase no desaparece. Aún puedes acceder a él con Student.name
xiaoming
El estudiante luego elimina el atributo s.name:
del s.name # Si elimina el atributo de nombre de la instancia
print(s.name) # Llame a s.name nuevamente ya que el atributo de nombre de la instancia no está. encontrado, se muestra el atributo de nombre de la clase.
El estudiante puede así ver las instancias con el mismo nombre. Las propiedades anularán las propiedades de la clase y, cuando se eliminen las propiedades de la instancia, las instancias accederán a las propiedades de la clase hacia arriba.
2. Atributos de vinculación de instancia
Hay dos formas de vincular atributos a una instancia, una es a través de la variable propia de la clase y la otra es asignar un valor directamente. la instancia.
clase Estudiante(objeto):
def __init__(self, nombre):
self.name = nombre
s = Estudiante ('Bob')#El método 1 vincula propiedades a través de la variable propia de la clase
s.score = 90#El método 2 asigna valores directamente 3. Método de vinculación de clase
Clase método de enlace Hay dos tipos. El primero tiene la forma de un atributo de enlace de clase. La rutina es la siguiente:
Clase Estudiante(objeto):
pasar
a=Estudiante( )#Crear instancia
def set_score(self,score):
self.score=score
Estudiante.set_score= set_score#Método de enlace de clase
p>a.set_score(99)#Método de llamada
a.score
99#El segundo resultado es usar MethodType para vincular el método a la clase:
Clase Estudiante(objeto):
pasar
a=Estudiante()#Crear instancia
def set_score(self,score):
self.score=score
de tipos import MethodType
Student.set_score = MethodType(set_score, Student) p>
a.set_score(99) #Método de llamada
a.score
99#Hay una cosa a tener en cuenta sobre este método de salida si continúa creando un. instancia b:
b=Estudiante ()
b.set_score(60)
b.score
a.score p>
60 encontrará el valor de puntuación del atributo de a. También se convierte en 60. Mi comprensión personal aquí es que la puntuación aquí no está directamente vinculada a la clase como el método anterior, sino que es similar a una relación de referencia compartida similar a una lista.
Es decir, ambas instancias a y b hacen referencia a esto. puntuación como su propio atributo, y cuando se modifica, los atributos correspondientes de todas las instancias que hacen referencia a él cambiarán juntos.
4. Método de vinculación de instancia
El primer método es vincular el método a la clase, para que se pueda llamar a la instancia, como se muestra arriba.
El segundo es usar MethodType para vincular métodos a una sola instancia.
Clase Estudiante(objeto):
pasar
a=Estudiante()#Crear instancia
def set_score(self,score) :
self.score=score
de tipos import MethodType
a.set_score = MethodType(set_score, a)
a. set_score(99)#Método de llamada
a.score
99#Salida Tenga en cuenta que este método solo funciona por ejemplo a. Si es necesario llamar a todas las instancias de la clase Studnet, entonces Simplemente vincula el método directamente a la clase Student.
Resumen