python-class-properties.md

#Python Class Properties

Properties are variables that belong to a class. They store data for each object created from the class.

#Example: Create a Class with Properties

pythonclass Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("Emil", 36)

print(p1.name)
print(p1.age)

#Access Properties

You can access object properties using dot notation.

#Example: Access the Properties of an Object

pythonclass Car:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

car1 = Car("Toyota", "Corolla")

print(car1.brand)
print(car1.model)

#Modify Properties

You can modify the value of properties on objects directly:

#Example: Change the Age Property

pythonclass Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("Tobias", 25)
print(p1.age)

p1.age = 26
print(p1.age)

#Delete Properties

You can delete properties from objects using the del keyword:

#Example: Delete the Age Property

pythonclass Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("Linus", 30)

del p1.age

print(p1.name) # This works
# print(p1.age) # This would cause an error

#Class Properties vs. Object Properties

#Example: Class Property vs. Instance Property

pythonclass Person:
  species = "Human" # Class property

  def __init__(self, name):
    self.name = name # Instance property

p1 = Person("Emil")
p2 = Person("Tobias")

print(p1.name)
print(p2.name)
print(p1.species)
print(p2.species)

#Modifying Class Properties

When you modify a class property, the change is reflected across all instances of that class.

#Example: Change a Class Property

pythonclass Person:
  lastname = ""

  def __init__(self, name):
    self.name = name

p1 = Person("Linus")
p2 = Person("Emil")

Person.lastname = "Refsnes"

print(p1.lastname)
print(p2.lastname)

#Add New Properties

You can add new properties to existing objects on the fly.

#Example: Add a New Property to an Object

pythonclass Person:
  def __init__(self, name):
    self.name = name

p1 = Person("Tobias")

p1.age = 25
p1.city = "Oslo"

print(p1.name)
print(p1.age)
print(p1.city)
Note: Adding properties this way only adds them to that specific object, not to all objects of the class.