xxxxxxxxxx
class Foo:
num_of_foos = 0 # class variable, shared by all instances
raise_amt = 1.04 # class variable
def __init__(self, x):
self.instance_var = x
Foo.num_of_foos += 1 # class safe way to use class variable
def raise_me(self):
# self.raise_amt allows object / subclass to override class variable
return self.instance_var * self.raise_amt
bar = Foo(1)
baz = Foo(1)
Foo.num_of_foos # 2
bar.num_of_foos # 2
bar.raise_me() # 1.04
bar.raise_amt = 1.5 # create instance variable that overrides class variable
bar.raise_me() # 1.5
xxxxxxxxxx
# Class variables refer to variables that are made within a class.
# It is generated when you define the class.
# It's shared with all the instance of that class.
# Example:
class some_variable_holder(object):
var = "This variable is created inside the class some_variable_holder()."
def somefunc(self):
print("Random function ran.")
thing = some_variable_holder()
another_thing = some_variable_holder()
# Both does the same thing because the same variable has been passed on from the class.
thing.var
another_thing.var
xxxxxxxxxx
# Class with class variables
class MyClass:
# Class variable
my_var = 10
def __init__(self):
self.instance_var = 20
# Accessing class variable
print(MyClass.my_var)
# Creating instances of class
obj1 = MyClass()
obj2 = MyClass()
# Accessing instance variable
print(obj1.instance_var)
print(obj2.instance_var)
xxxxxxxxxx
# Class definition with a class variable
class MyClass:
# Class variable
class_variable = "This is a class variable"
def __init__(self):
# Instance variable
self.instance_variable = "This is an instance variable"
# Accessing class variable directly using the class name
print(MyClass.class_variable)
# Creating an instance of MyClass
obj = MyClass()
# Accessing class variable using the instance
print(obj.class_variable)
# Modifying the class variable using the class name
MyClass.class_variable = "Updated class variable"
print(MyClass.class_variable)
print(obj.class_variable) # Note that instance variable remains the same
# Modifying the class variable using the instance
obj.class_variable = "Modified class variable through instance"
print(MyClass.class_variable) # Note that class variable remains unchanged
print(obj.class_variable)
# Output:
# This is a class variable
# This is a class variable
# Updated class variable
# Updated class variable
# Updated class variable
# Modified class variable through instance