Já sabemos que Python não tem palavra-chave static. Todas as variáveis que recebem um valor na declaração de classe são variáveis de classe.
Devemos ter cuidado ao alterar o valor da variável de uma classe. Se tentarmos mudar a variável de uma classe usando objeto, uma nova variável da instância (ou não estática) para aquele objeto particular é criada e esta variável obscurece as variáveis da classe. Abaixo está o programa Python para demonstrar o mesmo.
# Programa para testar a funcionalidade # Classe para estudantes de ciência da computação class CSStudent: stream = 'cse' # Variável da classe def __init__(self, name, roll): self.name = name self.roll = roll # Criação de objetos da classe CSStudent a = CSStudent("Geek", 1) b = CSStudent("Nerd", 2) print ("Inicialmente") print ("a.stream =", a.stream) print ("b.stream =", b.stream) # Isso não muda a variável da classe # Em vez disso, cria uma variável de instância para o objeto # 'a' que sombreia o membro da classe. a.stream = "ece" print ("\nDepois de mudar a.stream") print ("a.stream =", a.stream) print ("b.stream =", b.stream)
Resultado:
Initially Inicialmente a.stream = cse b.stream = cse Depois de mudar a.stream a.stream = ece b.stream = cse
Devemos alterar as variáveis da classe usando apenas o nome da classe.
# Programa para mostrar como fazer alterações na # variável da classe em Python # Classe para estudante de ciência da computação class CSStudent: stream = 'cse' # Variável da classe def __init__(self, name, roll): self.name = name self.roll = roll # Novo objeto para implementação posterior a = CSStudent("check", 3) print("a.tream =", a.stream) # Maneira correta de alterar o valor da variável de classe CSStudent.stream = "mec" print("\nA variável da classe mudou para mec") # Novo objeto para implementação posterior b = CSStudent("carter", 4) print("\nValor da variável steam para cada objeto") print("a.stream =", a.stream) print("b.stream =", b.stream)
Resultado:
a.tream = cse A variável da classe mudou para mec Valor da variável steam para cada objeto a.stream = mec b.stream = mec
Artigo escrito por Nikhil Kumar Singh e traduzido por Acervo Lima de Changing Class Members in Python
0 comentários:
Postar um comentário