Python中如何体现多态性?请提供两个相关练习题解答思路。

2026-05-21 18:414阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计580个文字,预计阅读时间需要3分钟。

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!')`

多态

一种接口,多种实现

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

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()

结果:

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()

结果:

in

点击查看

执行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()

结果:

in

点击查看结果

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



本文共计580个文字,预计阅读时间需要3分钟。

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!')`

多态

一种接口,多种实现

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

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()

结果:

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()

结果:

in

点击查看

执行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()

结果:

in

点击查看结果

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