【python面向对象】继承与多态(一)

本文详细探讨了Python中的面向对象编程,重点介绍了继承的概念、优缺点、作用和适用性,以及如何通过isinstance()和issubclass()等内置函数进行检查。文章还讨论了多态的定义、作用,并提供了相关练习。此外,提到了面向对象设计思想,如开-闭原则、类的单一职责、依赖倒置和组合复用原则。
摘要由CSDN通过智能技术生成

继承

定义

重用现有类的功能与概念,并在此基础上进行扩展。

优点

  1. 一种代码复用的方式。
  2. 以层次化的方式管理类。

缺点

耦合度高。

作用

隔离客户端代码与功能的实现方式。

适用性.

多个类在概念上是一致的,且需要进行统一的处理。

继承的方法

"""
    继承--方法
"""
#多个子类在概念上一致的﹐所以就抽象出一个父类.
#多个子类的共性﹐可以提取到父类中.
#从设计角度讲∶先有子﹐再有父.
#从编码角度讲∶先有父,再有子.

class Person:
    def say(self):
        print("说话")

class Student(Person):
    def study(self):
        print("学习")

class Teacher(Person):
    def teach(self):
        print("讲课")

s01 = Student()
#子类对象可以调用子类,也可以调用父类成员.
s01.study()#学习
s01.say()#说话#父类成员

p01 = Person()
#父类对象只可以调用父类成员,不能调用子类成员
p01.say()

python内置函数

1.isinstance()

t01 = Teacher()
#python 内置函数
#1.判断对象是否属于一个类型
#"老师对象“是一个老师类型
print(isinstance(t01, Teacher))#True
#"老师对象“不是一个学生类型
print(isinstance(t01, Student))#False
#"老师对象“是一个人类型
print(isinstance(t01, Person))#True

2.issubclass()

#2.判断一个类型是否属于另一个类型
#"老师类型”不是一个学生类型
print(issubclass (Teacher, Student))#False
#"老师类型”是一个人类型
print(issubclass (Teacher , Person))# True
# "人类型"不是一个老师类型
print(issubclass (Person , Teacher))# False

下面的图帮助大家理解其思想:在这里插入图片描述

练习

定义父类:
	动物(行为∶叫)
定义子类:
	狗(行为∶跑)    
	鸟(行为∶飞)
创建三个类型的对象
体会∶ isinstance(对象,类型)
体会∶ issubclass(类型,类型)
class Animal:
    def shout(self):
        print("叫")
class Dog(Animal):
    def run(self):
        print("跑")
class Bird(Animal):
    def fly(self):
        print("飞")


bird = Bird()
print(isinstance(bird, Bird))#True
print(isinstance(bird, Dog))#False
print(isinstance(bird, Animal))#True

print(issubclass(Bird,Dog))#False
print(issubclass(Bird,Animal))#True
print(issubclass(Animal,Bird))#False

继承的变量

"""
    继承--变量
"""
class Person:
    def __init__(self
  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值