Lo más aterrador es no cometer errores, pero no encontrarlos. Hasta ahora, sé que hay algo malo en mi comprensión de las variables de clase.
Quizás pueda deberse a la falta de uso frecuente de variables de clase, y este problema no se ha descubierto . Solo aprendí qué variables de clase son cuando estaba viendo C ++ recientemente .
Solía pensar que la única diferencia entre variables de clase y variables de miembros es que se puede acceder directamente a las variables de clase a través de nombres de clases y son estáticos. Las variables de los miembros deben ser instanciadas y accedidas a través de instancias.
Nunca esperé que ignorara que solo hay una variable de clase en una clase, y cada instancia es la misma. La modificación en una instancia afectará la variable de clase en otros casos ... (aunque por lo general no hay un error causado por esto, aún necesito compensar las vulnerabilidades cognitivas).
Aquí hay 2 ejemplos escritos en Java y Python :
clase pública oo {cadena estática pública s; cadena pública m; estática {s = "siempre"; } public static void main (string [] args) {oo o1 = new oo (); Oo o2 = new Oo (); o1.m = "una vez"; // El valor/dirección de las variables de clase en diferentes casos es el mismo sistema.out.println (o1.s); System.out.println (O2.S); System.out.println (o1.s.hashcode ()); System.out.println (o2.s.hashcode ()); o1.s = "123"; System.out.println (O2.S); // Cambiar la variable de clase y afectar otras instancias System.out.println (O1.M.HashCode ()); System.out.println (o2.m.hashcode ()); // nullpointerexception // Las variables de miembros tienen diferentes direcciones}} #!/bin/pythonclass b: def whoWMi (self): print ("__ clase __:%s, self .__ class __:%s"%(__ class __, self .__ class __)) clase c (b): count = 0 def __init __ (self): super (c, self) .__ init __ () self.num self.num += 1 def imprim (self): print ("count_id:%s, num_id:%s"%(id (__ clase __. Count), id (self.num))) print ("Count:%d, num:%d"%(__ clase __. En 1 tiempo, la variable de miembro i2 aumenta 2 veces, y la variable de clase aumenta 3 veces en total i1.add () i2.add () i2.add () i1.print () i2.print ()Lo anterior se trata de este artículo. Las vacaciones terminarán mañana. Espero que todos se dediquen activamente a su trabajo y continúen prestando atención a los artículos compartidos por el editor.