python--多态和两个练习题

简介: python--多态和两个练习题

多态


一种接口,多种实现

最初我们写类是这样调用的

class Animal(object):
    def __init__(self, name):
        self.name = name
    def talk(self):
        pass
class Cat(Animal):
    def talk(self):
        print('Meow!')
class Dog(Animal):
    def talk(self):
        print('Woof! Woof!')
d = Dog("杰克")
d.talk()
c = Cat("叶良辰")
c.talk()

结果:

Woof! Woof!
Meow!

这样也是一种多态

class Animal(object):
    def __init__(self, name):
        self.name = name
    def talk(self):
        pass
class Cat(Animal):
    def talk(self):
        print('Meow!')
class Dog(Animal):
    def talk(self):
        print('Woof! Woof!')
def animal_talk(obj):
    obj.talk()
d = Dog("杰克")
c = Cat("叶良辰")
animal_talk(c)
animal_talk(d)

结果:

Meow!
Woof! Woof!

最终的多态

class Animal(object):
    def __init__(self, name):
        self.name = name
    def talk(self):
        pass
    @staticmethod  # 静态方法
    def animal_talk(obj):  # 静态方法下这里不需要self
        obj.talk()
class Cat(Animal):
    def talk(self):
        print('Meow!')
class Dog(Animal):
    def talk(self):
        print('Woof! Woof!')
d = Dog("杰克")
c = Cat("叶良辰")
Animal.animal_talk(c)  # 调用了Animal下的    animal_talk方法,将c传给,animal_talk又调用了Dog下的talk(),相当于c.talk()
Animal.animal_talk(d)

结果:

Meow!
Woof! Woof!

练习题

class Parent():
    def func(self):
        print("in parent func")
    def __init__(self):
        self.func()
class Son(Parent):
    def func(self):
        print("in son func")
s = Son()

结果:

点击查看

执行Son()先执行__init__方法,Son类中没有,然后在他的父类中找,父类中有,执行self.func(),这时候self是Son()本身,所以执行Son方法下的func方法

class Parent():
    def __func(self):
        print("in parent func")
    def __init__(self):
        self.__func()
class Son(Parent):
    def __func(self):
        print("in son func")
s = Son()

结果:

点击查看结果

类执行的时候,遇到__xx的时候,会在前面加上_类名__xx,所以遇到self.__func()的时候,为self._Paernt__func()


相关文章
|
7月前
|
存储 Python
Python经典练习题(四)
Python经典练习题(四)
Python经典练习题(四)
|
7月前
|
存储 Web App开发 开发者
Python 自动化指南(繁琐工作自动化)第二版:附录 C:练习题的答案
Python 自动化指南(繁琐工作自动化)第二版:附录 C:练习题的答案
74 0
|
7月前
|
Python
请简述Python中的继承、封装和多态的概念。
【2月更文挑战第24天】【2月更文挑战第82篇】请简述Python中的继承、封装和多态的概念。
45 1
|
7月前
|
Python
Python 面向对象编程:什么是面向对象编程(OOP)?解释封装、继承和多态的概念。
Python 面向对象编程:什么是面向对象编程(OOP)?解释封装、继承和多态的概念。
92 0
|
7天前
|
设计模式 Python
简单分享下python多态
多态是面向对象编程中至关重要的特性,通过继承和方法重写,可以实现代码复用和灵活扩展。Python的鸭子类型进一步增强了多态的灵活性,使得代码更具适应性。通过理解和应用多态,可以写出更为简洁、优雅和高效的代码。
36 9
|
3月前
|
前端开发 Python
Python编程的面向对象有哪些(二)
Python编程的面向对象(二)—类的多态
30 7
|
6月前
|
Python
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
Python面向对象进阶:深入解析面向对象三要素——封装、继承与多态
|
6月前
|
Python
python多态 , 绑定方法与内置方法
python多态 , 绑定方法与内置方法
|
6月前
|
Python
python练习题
python练习题
|
7月前
|
Python
python面向对象编程,解释继承和多态的概念。
python面向对象编程,解释继承和多态的概念。
67 0