Примеры полиморфизма
Пример полиморфизма на основе метода:
class Dog:
def sound(self):
return "Woof!"
class Cat:
def sound(self):
return "Meow!"
def make_sound(animal):
return animal.sound()
my_dog = Dog()
my_cat = Cat()
print(make_sound(my_dog)) # Вывод: Woof!
print(make_sound(my_cat)) # Вывод: Meow!
Здесь метод sound
у каждого класса (Dog
и Cat
) имеет одно и то же имя, что позволяет использовать их полиморфно в функции make_sound
.
Пример полиморфизма на основе класса:
class Shape:
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def area(self):
return self.length * self.width
def calculate_area(shape):
return shape.area()
circle = Circle(5)
rectangle = Rectangle(4, 6)
print(calculate_area(circle)) # Вывод: 78.5
print(calculate_area(rectangle)) # Вывод: 24
Здесь полиморфизм проявляется в том, что оба объекта (Circle
и Rectangle
) могут быть использованы в функции calculate_area
, несмотря на разные классы.
Пример полиморфизма на основе переменной:
class Car:
def fuel_efficiency(self):
return 20 # Мили на галлон
class Bicycle:
def fuel_efficiency(self):
return "N/A" # Велосипед не использует топливо
def print_fuel_efficiency(vehicle):
print(f"Fuel efficiency: {vehicle.fuel_efficiency()} MPG")
my_car = Car()
my_bicycle = Bicycle()
print_fuel_efficiency(my_car) # Вывод: Fuel efficiency: 20 MPG
print_fuel_efficiency(my_bicycle) # Вывод: Fuel efficiency: N/A MPG
В этом примере полиморфизм основан на переменной vehicle
, которая может ссылаться как на объект класса Car
, так и на объект класса Bicycle
. Обе переменные вызывают метод fuel_efficiency
полиморфно.
PreviousООП и его принципыNextСтатический полиморфизм (перегрузка методов) и Динамический полиморфизм (переопределение методов):
Last updated
Was this helpful?