鱼C论坛

 找回密码
 立即注册
查看: 2110|回复: 0

[学习笔记] 多态

[复制链接]
发表于 2023-2-13 22:12:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# !/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time   : 2023/2/13 21:39
# @Author : xiongming
# @File   : duotai.py
# @Desc   : 类继承中的多态

class Shape():
    def __init__(self, name):
        self.name = name
    def area(self):
            pass

class Square(Shape):
    def __init__(self, length):
        super().__init__("正方形")
        self.length = length
    def area(self):
        return self.length * self.length

class Circle(Shape):
    def __init__(self, radius):
        super().__init__("圆形")
        self.radius = radius
    def area(self):
        return 3.14 * self.radius * self.radius

class Triangle(Shape):
    def __init__(self, base, height):
        super().__init__("三角形")
        self.base = base
        self.height = height

    def area(self):
        return self.base * self.height / 2

s = Square(5)
c = Circle(6)
t = Triangle(3, 4)

print(s.name)
print(s.area())
print(c.area())
print(t.area())

class Cat:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def intro(self):
        print(f"我是一只猫,我叫{self.name},今年{self.age}岁了。")
    def say(self):
        print("mua~")

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def intro(self):
        print(f"我是一只小狗,我叫{self.name},今年{self.age}岁了。")
    def say(self):
        print("wangwang~~")

class Pig:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def intro(self):
        print(f"我是一只小猪,我叫{self.name},今年{self.age}岁了。")
    def say(self):
        print("oink~~")

c = Cat("web", 4)
d = Dog("小黑", 3)
p = Pig("佩奇", 2)

#  多态性表现
def animal(x):
    x.intro()
    x.say()

animal(c)
animal(d)
animal(p)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-16 11:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表