面向对象(继承、重写、多态)以及异常处理

一.继承(单继承多继承继承:即可以继承多个父类)

 目标: 实现代码的重用,相同的代码不需要重复的编写。

class Human:          #创建一个类
    def eat(self):
        print(‘chi‘)
    def drink(self):
        print(‘he‘)
    def la(self):
        print(‘la‘)
    def sa(self):           #有吃喝拉撒四种方法
        print(‘sa‘)
class Man(Human):           #再创建一个类Man,以Human做父类,就继承了Human的四种方法    def ml(self):        print(‘fight‘)man = Man()man.eat()man.drink()...            #实例化man继承了父类Human和Man的所有方法

二 :父类方法的重写和拓展

1).当父类方法不满足子类需求时,就需要重写。

2).对父类的方法进行扩展
1.在子类中重写父类的方法
2.在需要的位置使用super().父类方法来调用父类方法的执行
3.代码其他的位置针对子类的需求,编写子类特有的代码实现
3)关于super
在python中super是一个特殊的类
super()就是使用super类创建出来的对象
最常使用的场景就是在重写父类方法时,调用在父类中封装的方法实现
class Human:          #创建一个类
    def eat(self):
        print(‘chi‘)
    def drink(self):
        print(‘he‘)
    def la(self):
        print(‘la‘)
    def sa(self):           #有吃喝拉撒四种方法
        print(‘sa‘)

class Man(Human):           #再创建一个类Man,以Human做父类,就继承了Human的四种方法
    def ml(self):
        print(‘fight‘)

class Daniu(Man):          #再创建一个类来继承Man,就继承了Man的方法
    def ml(self):           #此处重写父类的ml方法为peace
        print(‘peace‘)
        super().ml()         #此处用super().父类方法的格式来调用父类方法,这样就可以在重写的基础上再获得父类方法。
H = Daniu()           #实例化Daniu类
H.ml()
H.eat()
H.drink()
H.la()
H.sa()                 #调用方法查看结果

三:多态

  面向对象的三大特性:

  1.封装根据职责将属性和方法封装到一个抽象的类中
定义类的准则
  2.继承实现代码的重用,相同的代码不需要重复的编写
设计类的技巧
子类针对自己特有的需求,编写特定的代码
  3.多态不同的子类对象调用相同的父类方法,产生不同的执行结果
    1.多态可以增加代码的灵活度
    2.以继承和重写父类方法为前提
    3.是调用方法的技巧,不会影响到类的内部设计
class Dog:                                  #创建父类Dog    def __init__(self,name):       #封装属性和方法        self.name =name    def game(self):        print(‘wan‘)

class Xiaotian(Dog):    def game(self):          #覆盖父类的方法        print(‘fight‘)

class Human:             #再创建一个类    def __init__(self,name):        self.name = name    def paly_with(self,who):          #和别人玩的方法这里定义一个形参        print(‘%s和%s一起玩‘ %(self.name,who.name))

xt = Xiaotian(‘小天‘)        #实例化Xiaotian类的对象dt = Xiaotian(‘大天‘)# xt.game()                  #查看重写结果h = Human(‘大牛‘)        #实例化Humanh.paly_with(xt)          #让实例化对象小天和大天做传参对象,就能实现多态,即子类对象调用相同的父类方法,产生不同结果。h.paly_with(dt)

四:异常处理

什么是异常?

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在Python无法正常处理程序时就会发生一个异常。

异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

异常处理:
捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

如果你不想在异常发生时结束你的程序,只需在try里捕获它。

语法:以下为简单的try....except...else的语法:try:
    print(mama)except:    print(‘错误‘)      #--》此处预测print(mama)会报错,使用try和except语法捕捉异常,输出错误,而不是报错停止程序

try:    print(mama)except NameError:        #根据预测报错,输出对应的错误    print(‘名字定义错误‘)

try:    print(mama)except NameError as e:      #---》name ‘mama‘ is not defined 将预测的报错信息写入e文件输出    print(e)

try:    print(mama)except ValueError as e:      #---》NameError: name ‘mama‘ is not defined 如果预测错误,except不会捕捉,而是终止程序报错    print(e)

try:    print(mama)    int(‘baba‘)except NameError as e:    print(e)                #----》name ‘mama‘ is not defined 执行完毕 ,因为print(mama)先报错,终止程序,int(’baba‘)没有执行。                            # 但是finaly语法一定会输出结果except ValueError as e:    print(e)finally:    print(‘执行完毕‘)  
 

原文地址:https://www.cnblogs.com/zzzynx/p/10790345.html

时间: 2024-10-02 19:02:19

面向对象(继承、重写、多态)以及异常处理的相关文章

Java面向对象㈡ -- 继承与多态

Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆盖的概念.覆盖被用来支持多态.实际开发中Java通常继承于抽象类,实现于接口.如果不希望一个类被继承,或者一个方法被覆盖,或者一个成员变量被改变,就可以用final修饰.这里只说明两个问题:1,重载和覆盖的区别重载和覆盖的区别:重载发生在同一个类之中,重载要求函数名相同,参数不同(参数个数||参数类

Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-" 什么是面向对象 面向对象就不像面向过程那样按照功能划分模块了,它所关注的是软件系统有哪些参与者,把这些参与者称为对象,找出这些软件系统的参与者也就是对象之后,分析这些对象有哪些特征.哪些行为,以及对象之间的关系,所以说面向对象的开发核心是对象 什么是类 面向对象编程的两个重要的概念:类和对象 类是

Python学习(七)面向对象 ——继承和多态

Python 类继承和多态 在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). 我们先来定义一个class,名为Person,表示人,定义属性变量 name 及 sex (姓名和性别):定义一个方法:当sex是male时,print he:当sex 是female时,pr

day6面向对象--继承、多态

继承     继承:就像遗传一样,继承就是拥有父类的所有方法和属性,并且能够定义自己独特的属性和方法,对上面的类进行扩展. 可以什么都不写,直接继承父类,如下: class People(object): def __init__(self,name,age): self.name = name self.age = age def eat(self): print("%s is eating......" %self.name) def sleep(self): print(&quo

20150429 C#面向对象 继承与多态

继承一.什么继承?1.父类的相关成员,会自动派生到子类去.public protected2.子类可以扩展父类的相关成员.3.子类可以替代父类来使用,但父类不能替代子类来使用.二.继承的语法:class 子类名:父类名{ }三.继承的规则:(一)成员变量的继承1.public protected2.如果同名就隐藏.子类与父类各自用各自的成员.(二)属性的继承1.属性一般只有public2.如果同名就隐藏.子类与父类各自用各自的成员.(三)方法的继承1.public protected2.如果同名

Java基础学习191221(可变参数,数组,Array类,稀疏数组,继承重写多态,抽象类,接口)

Java基础学习 可变参数 在方法声明中,在指定参数类型后加一个省略号(...). 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通参数都必须在它之前声明. public class printMax { public static void main(String[] args) { printMax(1,5,8,78,415,15); } public static void printMax( double... numbers){ if (numbers.length

python 面向对象——继承与多态

Python是面向对象的编程语言,面向对象的基本单元是类 类的声明: 1 class class_name(): 2 pass 测试如下: In [1]: class c(): ...: pass ...: In [2]: a=c() In [3]: a Out[3]: <__main__.c instance at 0x07500A30> 类的继承: 1 In [4]: class base(): 2 ...: def f(self): 3 ...: print 'base' 4 ...:

面向对象-继承和多态

在这一节中,你将体会到面向对象的诸多特色. 1.单继承 class Person(Object): def __init__(self, name, age): self.name = name self.age = age def walk(self): print("%s is walking..." % self.name) def talk(self): print("%s is talking..." % self.name) # 定义子类1 py2\3都

java学习中,面向对象的三大特性:封装、继承、多态 以及 super关键字和方法的重写(java 学习中的小记录)

java学习中,面向对象的三大特性:封装.继承.多态 以及 super关键字和方法的重写(java 学习中的小记录) 作者:王可利(Star·星星) 封装     权限修饰符:public 公共的,private 私有的     封装的步骤:          1.使用private 修饰需要封装的成员变量.          2.提供一个公开的方法设置或者访问私有的属性              设置 通过set方法,命名格式:     set属性名();  属性的首字母要大写 访问 通过ge

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前