python的继承模式_Python之继承--增加新功能,不更改以前的代码

面向对象设计与开闭原则
本文通过一个具体的示例讲解了面向对象设计中的开闭原则。介绍了如何通过继承和多态来实现系统的扩展性而不修改原有代码,遵循依赖倒置原则。

在实际工作中,设计模式的时候,要增加新功能,不要更改以前的代码,这是封装和继承的高度总结。

isinstance('对象',"类") 返回Ture or False

issubclass("儿子类","父亲类")

"""

继承

老张开车去东北

变化:飞机,火车,汽车……

面向对象设计原理

1.开闭原则

开放 关闭

对扩展 对修改

允许增加新功能 不允许修改以前的代码

2. 依赖倒置

使用父类,而不是子类

"""

class Person:

def __init__(self,name):

self.name = name

# def go_to(self,str_type,str_pos):

# if str_type == "汽车":

# Car().run(str_pos)

# elif str_type == "飞机":

# Airplane().fly(str_pos)

def go_to(self, vehicle, str_pos):

"""

使用的是交通工具,而不是汽车飞机等,

所以无需判断具体类型

:param vehicle: 交通方式的父类

:param str_pos: 到大的目的地

:return:

"""

#如果传入的对象,不是交通工具,则退出

if not isinstance(vehicle,Vehicle):

print("传入的不是交通工具")

return

vehicle.transport(str_pos)

class Vehicle:

"""

交通工具

"""

def transport(self, str_pos):

#人为创造一个错误

raise NotImplementedError()

# print("儿子们,必须有这个方法")

class Car(Vehicle):

def transport(self,str_pos):

print("行驶到",str_pos)

class Airplane(Vehicle):

def transport(self,str_pos):

print("飞到",str_pos)

class Bike():

"""

该类没有继承Vehicle

"""

def transport(self,str_pos):

print("骑车到",str_pos)

p01 = Person("老张")

p01.go_to(Car(),"东北")

p01.go_to(Bike(),"东北")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值