[Основы Python]-08 Базовые знания объектно-ориентированного программирования (2)

[Основы 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, и я желаю вам прогресса в программировании!

рекомендация

отblog.csdn.net/mingfeng4923/article/details/130909535