Каталог статей
[Основы Python]-07 Базовые знания объектно-ориентированного программирования (1)
3. Наследование
Наследование — важная концепция объектно-ориентированного программирования в Python, которая позволяет нам создавать новый класс и наследовать свойства и методы от одного или нескольких существующих классов (называемых родительскими или базовыми классами). Давайте подробно разберемся с концепцией наследования и проиллюстрируем ее на примере.
3.1 Концепция наследования
Наследование — это механизм, который позволяет классу (называемому подклассом или производным классом) наследовать свойства и методы другого класса (называемого родительским или базовым классом). Подклассы наследуют свойства родительского класса и могут добавлять собственные новые функции или переопределять унаследованные методы.
3.2 Синтаксис наследования
В Python наследование достигается путем указания родительского класса в определении подкласса. Синтаксис следующий:
class ChildClass(ParentClass):
# 子类的定义
3.3 Примеры наследования
Давайте проиллюстрируем концепцию наследования на примере:
class Animal:
def __init__(self, name):
self.name = name
def sound(self):
print("动物发出声音")
class Dog(Animal):
def sound(self):
print("狗在汪汪叫")
class Cat(Animal):
def sound(self):
print("猫在喵喵叫")
dog = Dog("旺财")
cat = Cat("咪咪")
dog.sound() # 输出 "狗在汪汪叫"
cat.sound() # 输出 "猫在喵喵叫"
В приведенном выше случае мы определили Animal
родительский класс с именем , у которого есть sound
метод для печати звуков животных. Затем мы создали два подкласса Dog
и Cat
, которые наследуют Animal
класс. Метод переписан в подклассе sound
, чтобы реализовать звук лая собаки и лая кошки соответственно.
Создавая экземпляры классов Dog
и Cat
и вызывая их sound
методы, мы видим, что они соответственно лают и мяукают. Это роль наследования, подклассы могут наследовать характеристики родительского класса и изменять или расширять его по мере необходимости.
3.4 Множественное наследование
Помимо одиночного наследования, Python также поддерживает множественное наследование, то есть подкласс может наследоваться от нескольких родительских классов. Синтаксис следующий:
class ChildClass(ParentClass1, ParentClass2):
# 子类的定义
Множественное наследование позволяет подклассам наследовать свойства и методы от нескольких родительских классов, обладая при этом характеристиками нескольких родительских классов.
Наследование — очень мощная и гибкая функция объектно-ориентированного программирования, упрощающая повторное использование и расширение кода. Через наследование мы можем использовать
Создавайте связанные классы с различным поведением, не повторяя один и тот же код. Это улучшает ремонтопригодность и масштабируемость кода.
4. Упаковка
В объектно-ориентированном программировании Python инкапсуляция является важной концепцией, позволяющей объединять данные и связанные с ними методы в единое целое, а детали реализации скрыты от внешнего мира. Благодаря инкапсуляции мы можем контролировать доступ к внутренним свойствам и методам класса, повышая безопасность и удобство сопровождения кода. Давайте подробно разберем концепцию инкапсуляции и проиллюстрируем ее на примере.
4.1 Концепция инкапсуляции
Инкапсуляция — это механизм объединения данных и методов для обеспечения сокрытия информации и защиты согласованности данных. В классах мы можем использовать модификаторы доступа для управления уровнем доступа к свойствам и методам. Общие модификаторы доступа бывают public, protected и private.
- Публичный: доступ к свойствам и методам возможен извне класса.
- Защищено: доступ к свойствам и методам возможен только внутри класса и его подклассов.
- Private: Доступ к свойствам и методам возможен только внутри класса.
4.2 Случай инкапсуляции
Давайте проиллюстрируем концепцию инкапсуляции на примере:
class Person:
def __init__(self, name, age):
self.name = name
self._age = age # 保护属性,约定以单下划线开头
self.__address = "北京" # 私有属性,约定以双下划线开头
def display_info(self):
print(f"姓名:{
self.name}")
print(f"年龄:{
self._age}")
print(f"地址:{
self.__address}")
person = Person("Mingfeng", 25)
person.display_info()
В приведенном выше случае мы определили Person
класс с именем, который имеет общедоступное свойство name
, защищенное свойство _age
и частное свойство __address
. В методах класса мы можем напрямую обращаться к этим свойствам.
Создав Person
экземпляр класса и вызвав display_info
метод, мы можем увидеть, что за пределами класса есть доступ к общедоступным name
и защищенным свойствам _age
, но нет прямого доступа к закрытым свойствам __address
. Доступ к частным свойствам можно получить определенным образом, например, с помощью _类名__属性名
формы (например _Person__address
, ).
Благодаря инкапсуляции мы можем скрыть детали внутренней реализации класса, предотвратить прямой внешний доступ и изменение атрибутов, а также повысить безопасность и удобство сопровождения кода. Инкапсуляция также обеспечивает лучшую организацию и структуру кода, делая код более читабельным и понятным.
Следует отметить, что инкапсуляция предназначена не для ограничения доступа, а для обеспечения хорошей практики программирования, позволяющей сделать код более надежным и расширяемым. Мы должны выбрать соответствующий визит
Задавайте модификаторы и следуйте определенным соглашениям для написания объектно-ориентированного кода.
5. Полиморфизм
В объектно-ориентированном программировании на Python полиморфизм является важной концепцией, которая позволяет различным объектам по-разному реагировать на один и тот же метод. Полиморфизм может повысить гибкость и масштабируемость кода, чтобы мы могли писать общий код для работы с различными объектами. Давайте подробно разберемся с концепцией полиморфизма и проиллюстрируем ее на примере.
5.1 Концепция полиморфизма
Полиморфизм относится к нескольким формам объектов. В объектно-ориентированном программировании полиморфизм означает, что одно и то же поведение может выполняться разными объектами, то есть разные объекты могут по-разному реагировать на один и тот же метод. Полиморфизм позволяет нам писать более общий код и улучшать возможность повторного использования и масштабируемость кода.
5.2 Реализация полиморфизма
Полиморфизм может быть достигнут за счет переопределения и перегрузки методов. Переписывание методов относится к переопределению существующих методов в родительском классе в подклассе для достижения другого поведения. Перегрузка метода относится к определению нескольких методов в одном классе, у них одинаковое имя, но разные типы параметров или количество параметров, чтобы добиться разного поведения.
5.3 Случай полиморфизма
Давайте проиллюстрируем концепцию полиморфизма на примере:
class Animal:
def sound(self):
pass
class Dog(Animal):
def sound(self):
print("汪汪汪!")
class Cat(Animal):
def sound(self):
print("喵喵喵!")
def make_sound(animal):
animal.sound()
dog = Dog()
cat = Cat()
make_sound(dog) # 输出 "汪汪汪!"
make_sound(cat) # 输出 "喵喵喵!"
В приведенном выше случае мы определили Animal
родительский класс с именем , у которого есть sound
метод с именем . Затем мы создали два подкласса Dog
и Cat
, которые соответственно переопределяют sound
методы для получения разных звуков.
Мы можем добиться полиморфизма, передавая различные объекты животных в функцию, определив make_sound
функцию с именем , которая принимает Animal
параметр типа и вызывает свой метод. sound
Будь то Dog
объект или Cat
объект, все они реагируют на sound
методы и издают свои собственные звуки.
Полиморфизм позволяет нам писать общий код, выполняющий одни и те же операции с разными объектами. Таким образом, мы можем более гибко обрабатывать различные типы объектов и улучшать возможность повторного использования и масштабируемость кода.
краткое содержание:
Полиморфизм — важная концепция объектно-ориентированного программирования, позволяющая различным объектам по-разному реагировать на один и тот же метод. Благодаря переопределению и перегрузке методов мы можем добиться полиморфизма. Полиморфизм обеспечивает более гибкий и расширяемый способ написания кода, улучшая повторное использование кода и удобство сопровождения.
в заключение
Из этого введения у вас должно быть общее представление об объектно-ориентированном программировании на Python. Объектно-ориентированное программирование — это мощная парадигма программирования, которая может улучшить читаемость и удобство сопровождения кода и предоставляет такие функции, как инкапсуляция, наследование и полиморфизм. Я надеюсь, что эта статья поможет вам изучить объектно-ориентированное программирование на Python, и я желаю вам прогресса в программировании!