Душа кода 🎗️Наследование 🎗️ и 🎗️Полиморфизм 🎗️|Месяц тем Python

задняя часть Python
Душа кода 🎗️Наследование 🎗️ и 🎗️Полиморфизм 🎗️|Месяц тем Python

Эта статья участвует в "Месяце тем Python", подробнее см.Цепочка действий

Управляемое чтение

Я только недавно закончил изучать java, и я всегда чувствую себя незнакомым с наследованием и полиморфизмом.Я обнаружил полиморфизм наследования python, когда искал информацию, и нашел ее интересной, поэтому я поделюсь ею с вами и сравним ее с java.

наследовать

что такое наследование

image.png

  • Конечно, приведенная выше картина — всего лишь метафора.На самом деле наследование — это концепция объектно-ориентированной программной технологии в коде, и это три основные характеристики объектно-ориентированного подхода вместе с полиморфизмом и инкапсуляцией. Наследование позволяет подклассам иметь свойства и методы родительского класса или переопределять или добавлять свойства и методы. Примечание. Наследование в python делится на: одиночное наследование и множественное наследование.
  • Целью наследования является повышение скорости повторного использования кода и сокращение объема ненужного кода.На следующем рисунке показано, что животные обладают основными характеристиками кошек и собак.Животные являются родителями, а кошки и собаки – детьми.

image.png

Унаследованные функции

  • 1. При методе вызова базового класса необходимо добавить префикс имени класса базового класса, и обязательна переменная параметра SELF. В отличие от вызова обычной функции в классе нет необходимости вводить параметр Self.

  • 2. Построение базового класса в наследовании (init()) не вызывается автоматически, его нужно вызывать специально при построении самого его производного класса.

  • 3. Python всегда сначала ищет метод соответствующего типа.Если он не может найти соответствующий метод в производном классе, он начинает искать один за другим в базовом классе. (Сначала найдите вызываемый метод в этом классе, а затем перейдите к базовому классу, если вы не можете его найти).

  • 4. Родительский класс в наследовании. Класс, который раньше наследовался, называется родительским классом, также называемым базовым классом или суперклассом. Подкласс: класс, который наследует другие классы, называется подклассом, также называемым производным классом.

единоличное наследство

  • Python поддерживает наследование классов. Если язык не поддерживает наследование, классы бессмысленны. В связи с этим, говоря о языке, лучше смотреть на реальный код. (личное мнение)

class Animal: #父类
    def eat(self): 
        print("-----吃-----")

    def drink(self):
        print("-----喝-----")
        
    def sleep(self):
        print("-----睡-----")


class Dog(Animal): #子类继承父类
    """
    def eat(self):
        print("-----吃-----")

    def drink(self):
        print("-----喝-----")
     
     def sleep(self):
        print("-----睡-----")
    """
    pass


class Cat:
    pass


wang_cai = Dog()
wang_cai.eat()
wang_cai.drink()
wang_cai.sleep()#wang——cai继承了动物的吃,喝,睡

многоуровневое наследование

在这里插入图片描述

Проще говоря, это отношение: животное - собака - рычащая собака (это все более конкретно) подкласс наследует родительский класс и затем наследуется другими подклассами

class Animal:
    def eat(self):
        print("-----吃-----")

    def drink(self):
        print("-----喝-----")


class Dog(Animal):
    def bark(self):
        print("-----汪汪叫------")


class XTQ(Dog):
    """定义了一个哮天犬 类"""
    pass
#继承之后哮天犬就会“吃”,“喝”,“汪汪叫”

переписать

Как следует из названия, этот метод переписан, но:Имя метода не изменилось

Например:


class Animal: #父类
    def eat(self):
        print("-----吃-----")

    def drink(self):
        print("-----喝-----")

 
class Dog(Animal): 
    def bark(self):
        print("-----汪汪叫------")


class XTQ(Dog): #重写Dog方法
    """定义了一个哮天犬 类"""
    def bark(self):
        print("----嗷嗷叫-----")
#重写了bark

множественное наследование

在这里插入图片描述Эта картина ярко выражает смысл множественного наследования: животное наследует пингвинов и эрху одновременно.

Следующий код:


# 定义一个父类
class qi-e:
    def printA(self):
        print('----企鹅----')

# 定义一个父类
class er-ha:
    def printB(self):
        print('----二哈----')

# 定义一个子类,继承自A、B
class C(A,B):
    def printC(self):
        print('----我也不知道是什么----')

obj_C = C()
obj_C.printA()
obj_C.printB()

полиморфизм

  • Функция: Разрешить функциям с разными функциями использовать одно и то же имя функции, чтобы функции с разным содержимым (функциями) можно было вызывать с одним именем функции.
  • Особенности: важно только, имеют ли методы экземпляра объекта одно и то же имя, а не тип, к которому принадлежит объект; отношения наследования между классами, которым принадлежит объект, необязательны; преимущества полиморфизма могут повысить гибкость внешних вызов кода, что делает код более общим, совместимость относительно сильна; полиморфизм — это метод вызова методов, который не влияет на внутреннюю структуру класса.
class Duck:
    def quack(self):
        print("Quaaaaaack!")


class Bird:
    def quack(self):
        print("bird imitate duck.")


class Doge:
    def quack(self):
        print("doge imitate duck.")


def in_the_forest(duck):
    duck.quack()


duck = Duck()
bird = Bird()
doge = Doge()
for x in [duck, bird, doge]:
    in_the_forest(x)

расширять:

  • Производительность полиморфизма в Java: полиморфизм можно понимать как несколько форм вещи. Точно так же полиморфизм также поддерживается в python, но он ограничен поддержкой полиморфизма, главным образом потому, что использование переменных в python не нужно объявлять, поэтому нет полиморфизма, в котором ссылки родительского класса указывают на объекты подкласса, а python делает не поддерживает перегрузку. Использование полиморфизма в python не так очевидно, как в Java, поэтому нет особого смысла намеренно говорить о полиморфизме в python.

Суммировать

Я думаю, что язык удобен для вас в использовании.Наследование и полиморфизм в java и python имеют свои преимущества.При использовании вы должны выбрать свое собственное спокойствие.В то же время эти два также можно сравнить и запомнить, не только потому, что вы знаете один язык.Ну, давайте выучить немного больше, чтобы в случае, если вы можете использовать его, вы можете спасти свою жизнь.

在这里插入图片描述