Classes: Difference between revisions
Appearance
No edit summary |
No edit summary |
||
(7 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
== Basic Class == | == Basic Class == | ||
<syntaxhighlight lang="python" | <syntaxhighlight lang="python"> | ||
class Cat: # Use capital letter for class name | class Cat: # Use capital letter for class name | ||
"""Basic class with simple attributes | """Basic class with simple attributes | ||
Line 25: | Line 25: | ||
your_cat.sleep() | your_cat.sleep() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Parent and | |||
== Parent Classes, Child Classes, and Compositions == | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
class Car: # Parent class defined first in module | class Car: # Parent class defined first in module | ||
Line 59: | Line 60: | ||
my_car.read_odo() | my_car.read_odo() | ||
class ElectricCar(Car): # Child class | class ElectricCar(Car): # Child class calls parent class | ||
"""Child Class for electric cars""" | """Child Class for electric cars""" | ||
def __init__(self, make, model, year): | def __init__(self, make, model, year): | ||
""" | """Initialize Attributes""" | ||
super().__init__(make, model, year) # call | super().__init__(make, model, year) # initialize parent class attributes | ||
self.battery = Battery() # initialize local attributes (call battery class) | |||
class Battery: | |||
"""Separate Class to model batteries""" | |||
def __init__(self, battery_capacity = 40): | |||
"""Initialize Attributes""" | |||
self.battery_capacity = battery_capacity # initialize local attributes | |||
def get_battery_capacity(self): | |||
"""Print battery info""" | |||
print(f"This car is equipped with a {self.battery_capacity}-KWh battery.") | |||
def get_battery_range(self): | |||
"""Print battery range""" | |||
if self.battery_capacity == 40: | |||
range = 150 | |||
elif self.battery_capacity == 65: | |||
range = 225 | |||
print(f"This car has a range of approximately {range}.") | |||
your_car = ElectricCar('Tesla', 'model 3', 2024) | your_car = ElectricCar('Tesla', 'model 3', 2024) | ||
print(f"Your car is a {your_car.get_summary()}") | print(f"Your car is a {your_car.get_summary()}") | ||
print(your_car.battery.get_battery_capacity()) # via the battery attribute | |||
print(your_car.battery.get_battery_range()) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 85: | Line 110: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:Python]] |
Latest revision as of 17:37, 16 February 2025
Basic Class
class Cat: # Use capital letter for class name
"""Basic class with simple attributes
and methods """
def __init__(self, name, age): # Special method to create an instance
"""Initialize attributes"""
self.name = name
self.age = age
def eat(self): # Method defined in class
"""Simulate cat eating"""
print(f"{self.name} is eating.")
def sleep(self):
"""Simulate cat sleeping"""
print(f"{self.name} is sleeping.")
my_cat = Cat('Sushi', 4) # Create one instance
your_cat = Cat('Basil', 3) # Create another
print(f"My cat is called {my_cat.name} \
and your cat is called {your_cat.name}.")
my_cat.eat() # Call method
your_cat.sleep()
Parent Classes, Child Classes, and Compositions
class Car: # Parent class defined first in module
"""Basic car class"""
def __init__(self, make, model, year):
"""Initialize attributes"""
self.make = make
self.model = model
self.year = year
self.odo = 0
def get_summary(self):
"""Return summary info"""
summary = f"{self.year} {self.make} {self.model}"
return summary.title()
def read_odo(self):
""" Show mileage """
print(f"This car has driven {self.odo} miles.")
def update_odo(self, mileage):
"""Set odo to new value"""
if mileage >= self.odo:
self.odo = mileage
print(f"Odo updated to {self.odo}")
else:
print("You can't roll back the odo!")
my_car = Car('citroen', 'c4', 2012)
print(my_car.get_summary())
my_car.update_odo(123456)
my_car.read_odo()
class ElectricCar(Car): # Child class calls parent class
"""Child Class for electric cars"""
def __init__(self, make, model, year):
"""Initialize Attributes"""
super().__init__(make, model, year) # initialize parent class attributes
self.battery = Battery() # initialize local attributes (call battery class)
class Battery:
"""Separate Class to model batteries"""
def __init__(self, battery_capacity = 40):
"""Initialize Attributes"""
self.battery_capacity = battery_capacity # initialize local attributes
def get_battery_capacity(self):
"""Print battery info"""
print(f"This car is equipped with a {self.battery_capacity}-KWh battery.")
def get_battery_range(self):
"""Print battery range"""
if self.battery_capacity == 40:
range = 150
elif self.battery_capacity == 65:
range = 225
print(f"This car has a range of approximately {range}.")
your_car = ElectricCar('Tesla', 'model 3', 2024)
print(f"Your car is a {your_car.get_summary()}")
print(your_car.battery.get_battery_capacity()) # via the battery attribute
print(your_car.battery.get_battery_range())