Clase o variables estáticas en Python

Todos los objetos comparten clase o variables estáticas. Una instancia o variables no estáticas son diferentes para diferentes objetos (cada objeto tiene una copia). Por ejemplo, deje que un estudiante de ciencias de la computación esté representado por la clase CSStudent . La clase puede tener una variable estática cuyo valor sea “cse” para todos los objetos. Y la clase también puede tener miembros no estáticos como name y roll . En C++ y Java , podemos usar palabras clave estáticas para convertir una variable en una variable de clase. Las variables que no tienen una palabra clave estática anterior son variables de instancia. Vea esto para el ejemplo de Java y esto para el ejemplo de C++.
el pythonel enfoque es simple; no requiere una palabra clave estática. 

Todas las variables a las que se les asigna un valor en la declaración de clase son variables de clase. Y las variables a las que se les asignan valores dentro de los métodos son variables de instancia.
 

Python

# Python program to show that the variables with a value 
# assigned in class declaration, are class variables
  
# Class for Computer Science Student
class CSStudent:
    stream = 'cse'                  # Class Variable
    def __init__(self,name,roll):
        self.name = name            # Instance Variable
        self.roll = roll            # Instance Variable
  
# Objects of CSStudent class
a = CSStudent('Geek', 1)
b = CSStudent('Nerd', 2)
  
print(a.stream)  # prints "cse"
print(b.stream)  # prints "cse"
print(a.name)    # prints "Geek"
print(b.name)    # prints "Nerd"
print(a.roll)    # prints "1"
print(b.roll)    # prints "2"
  
# Class variables can be accessed using class
# name also
print(CSStudent.stream) # prints "cse"
  
# Now if we change the stream for just a it won't be changed for b
a.stream = 'ece'
print(a.stream) # prints 'ece'
print(b.stream) # prints 'cse'
  
# To change the stream for all instances of the class we can change it 
# directly from the class
CSStudent.stream = 'mech'
  
print(a.stream) # prints 'ece'
print(b.stream) # prints 'mech'

Producción: 

cse
cse
Geek
Nerd
1
2
cse
ece
cse
ece
mech

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *