O mais aterrorizante é não cometer erros, mas não encontrá -los. Até agora, eu sei que há algo errado com minha compreensão das variáveis de classe.
Talvez possa ser devido à falta de uso frequente de variáveis de classe, e esse problema não foi descoberto . Só aprendi quais variáveis de classe são quando estava assistindo C ++ recentemente ?
Eu costumava pensar que a única diferença entre variáveis de classe e variáveis de membros é que as variáveis de classe podem ser acessadas diretamente através de nomes de classe e são estáticas. As variáveis de membros precisam ser instanciadas e acessadas por meio de instâncias.
Eu nunca esperava que ignorei que existe apenas uma variável de classe em uma classe, e cada instância é a mesma. A modificação em uma instância afetará a variável de classe em outros casos ... (embora não haja bug causado por isso geralmente, ainda preciso compensar vulnerabilidades cognitivas).
Aqui estão 2 exemplos escritos em Java e Python :
classe pública oo {public static string s; Public String M; estático {s = "sempre"; } public static void main (string [] args) {oo o1 = new oo (); Oo o2 = novo oo (); o1.m = "uma vez"; // O valor/endereço das variáveis de classe em diferentes casos é o mesmo 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); // altere a variável de classe e afeta outras instâncias System.out.println (o1.m.HashCode ()); System.out.println (o2.m.hashcode ()); // nullpointerException // variáveis de membro têm endereços diferentes}} #!/bin/pythoMclass B: def whoami (self): print ("__ classe __:%s, self .__ classe __:%s"%(__ classe __, self .__ classe __)) classe C (b): contagem = 0 def __init __ (self): super (c, self). __ __). self.num += 1 def Print (self): print ("count_id:%s, num_id:%s"%(id (__ classe __. contagem), id (self.num))) print ("contagem:%d, num:%d"%(__ classe __. Por 1 tempo, a variável de membro i2 é aumentada 2 vezes e a variável de classe é aumentada 3 vezes no total i1.add () i2.add () i2.add () i1.print () i2.print ()O acima é tudo sobre este artigo. O feriado terminará amanhã. Espero que todos se dediquem ativamente ao seu trabalho e continuem prestando atenção aos artigos compartilhados pelo editor.