Classes: Difference between revisions
Appearance
Created page with "== Basic Class == <syntaxhighlight lang="python" line> 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 """Sim..." |
No edit summary |
||
(8 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 24: | Line 24: | ||
my_cat.eat() # Call method | my_cat.eat() # Call method | ||
your_cat.sleep() | your_cat.sleep() | ||
</syntaxhighlight> | |||
== Parent Classes, Child Classes, and Compositions == | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
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()) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 44: | 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())