首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 子类调用方法详解(单继承、多层继承、多重继承

测试环境: win7 64位 Python版本:Python 3.3.5 代码实践: 1、子类通过“名”调用的方法 class FatherA: def __init__(self)...__init__(self) # 子类调用的方法:父名.方法名称(参数) if __name__ == '__main__': b = SubClassB() 运行结果: >>> ==...(如SubClassB的父由FatherA变为FatherD),必须遍历整个定义,把子类中所有的父名全部替换过来 2、子类通过“super”方法调用的方法 场景1、单层继承 class...__init__() # 子类调用的方法:super().方法名称(参数) if __name__ == '__main__': b = SubClassB() class FatherA...,以super().method(参数)方法调用的方法,如果不同父存在同名方法method(不管参数列表是否相同),则按继承顺序,选择第一个父的方法。

2.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

python异常处理的哲学

所谓异常指的是程序的执行出现了非预期行为,就好比现实的做一件事过程总会出现一些意外的事。异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学。...写代码的时候如果只简单考虑正常的情况,那是往代码中下毒。 接下本篇博文将按照套路出牌(避免被Ctrl + W),介绍一下python的异常处理的概念和具体操作. 1....多数情况下要正确的处理调用错误调用参数和返回异常结果的情况,不然就可能要背黑锅了。 不可控的环境运行程序,异常处理是必须的。然而困难的地方是当异常发生,如何进行处理。...总结 python 异常处理: 使用对象来表示异常错误信息,每种异常均有一种对应的,BaseException为所有表示异常处理的基。...捕获异常却忽略掉或者错误处理不可取的。滥用异常处理不仅达不到提高系统稳定性的效果,还会隐藏掉引起错误的诱因,导致排查问题的难度增加。 因此比如何捕获异常更重要的是,异常发生应当如何处理

1.2K20

Python3入门学习三.md

: 由于环境的不确定性和用户操作的不可以预知性都可能导致程序出现各种问题,因此异常机制最重要的无非就是:增强程序的健壮性和用户体验,尽可能的捕获所有预知的异常并写好处理的代码,当异常出现的时候,程序自动消化并恢复正常.../usr/bin/python3 #程序异常处理 #案例1:无论何种错误都将执行我们处理代码 try: sum = 1 + 'a' except: print("程序出现错误BUG...,实际编程是变量(属性)和函数(方法); 面向对象的几个特征: 封装:对外部隐藏对象的工作细节 继承:子类自动共享父之间数据和方法的机制 (子类继承) 多态:可以对不同类的对象调用相同的方法...答:Python 继承机制很有用,但容易把代码复杂化以及依赖隐含继承。因此经常的时候,我们可以使用组合来代替。Python里组合其实很简单,直接在定义把需要的放进去实例化就可以了。...# 太撑了,吃不下了 # 我得位置是: -1 5 总结: 当子类与父定义相属性性或方法,Python 不会删除父的相关属性或方法而是将父类属性或方法覆盖;子类对象调用的时候会调用到覆盖后的新属性或方法

60430

3.Python3基础入门学习笔记(三)

错误和异常抛出 总结下异常处理机制的重要性: 由于环境的不确定性和用户操作的不可以预知性都可能导致程序出现各种问题,因此异常机制最重要的无非就是:增强程序的健壮性和用户体验,尽可能的捕获所有预知的异常并写好处理的代码.../usr/bin/python3 #程序异常处理 #案例1:无论何种错误都将执行我们处理代码 try: sum = 1 + 'a' except: print("程序出现错误BUG...,实际编程是变量(属性)和函数(方法); 面向对象的几个特征: 封装:对外部隐藏对象的工作细节 继承:子类自动共享父之间数据和方法的机制 (子类继承) 多态:可以对不同类的对象调用相同的方法...答:Python 继承机制很有用,但容易把代码复杂化以及依赖隐含继承。因此经常的时候,我们可以使用组合来代替。Python里组合其实很简单,直接在定义把需要的放进去实例化就可以了。...# 太撑了,吃不下了 # 我得位置是: -1 5 总结: 当子类与父定义相属性性或方法,Python 不会删除父的相关属性或方法而是将父类属性或方法覆盖;子类对象调用的时候会调用到覆盖后的新属性或方法

35710

25道Java基础面试题

(test ==str1 + str2 + str3); //false 这是因为字符串字面量拼接操作是Java编译器编译期间就执行了,也就是说编译器编译,直接把"java"、“and"和"python...功能不同: throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方 式;throw抛出具体的问题对象,执行到throw,功能就已经结束了,跳转到调用者,并 将具体的问题对象抛给调用者...因此输出,字节流不调用colse()方法,信息已经输出了,而字符流只有调用close()方法关闭缓冲区,信息才输出。要想字符流在未关闭输出信息,则需要手动调用flush()方法。...final 用于声明属性,方法和,分别表示属性不可变,方法不可覆盖,不可继承。 finally是异常处理语句结构的一部分,表示总是执行。...super可以理解为是指向自己超(父)对象的一个指针,而这个超指的是离自己最近的一个父。 其他: super()子类调用的构造方法,this()本类内调用本类的其它构造方法。

36420

python基础知识总结(小白福利来了)……人生苦短,我用python

内置函数 可变类型与不可变类型 三目运算符:三元表达式 函数 函数的使用 函数的返回值 函数的参数 函数的嵌套 变量 递归(算法)函数 匿名函数 python的设计思想之一:全面调用计算机功能 异常处理...file_1.close() 异常处理 # 异常处理:python中专门用来处理程序中出现错误和异常的功能,可以用于程序调试 # 异常:程序运行是,python解释器遇到错误,停止运行并提示错误信息...# 语法错误:不符合规范 # 运行错误:程序复杂可能出现错误 # 语义错误:在编程,将需求转化为代码逻辑出错。...(将函数封装成) #面向对象编程思维再解决问题,会将问题拆分成一个一个对象,根据对象的职责来定义方法 #面向对象的三大特点封装、继承、多态 class Print: def print_1...(顶格),定义的函数叫方法属于这个 #调用:函数调用直接使用函数名(),方法的调用对象名.方法名() #__init__和self: #__方法名__ 属于内置方法 #__init__ 初始化对象

55120

Python常见编程基础问题总结

错误处理机制。...答案是根本不需要处理,因为 Python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型 Python 很可能是相同的代码,没有必要做成两个不同函数。...,它会在每次创建的新对象执行); __new__ 方法用于创建对象并返回对象,当返回对象时会自动调用 __init__ 方法进行初始化, __new__ 方法比 __init__ 方法更早执行; _...静态语言定义变量必须指定变量类型,如果赋值的时候类型不匹配,就会报错,Java/C++ 都是静态语言(int a; a = 100) Python 装饰器理解 装饰器本质上是一个 Python 函数或...总结 继承可以拿到父的所有数据和方法,子类可以重写父的方法,也可以新增自己特有的方法。 有了继承,才有了多态,不同类的对象对同一消息会作出不同的相应。

1K20

【愚公系列】2021年12月 Python教学课程 18-异常处理

有些错误是我们编写代码自己造成的,比如语法错误调用错误,甚至逻辑错误。还有一些错误,则是不可预料的错误,但是完全有可能发生的,比如文件不存在、磁盘空间不足、网络堵塞、系统错误等等。...这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。...发生异常的时候,Python 会打印出异常信息,信息的前面部分显示了异常发生的上下文环境,并以调用栈的形式显示具体信息。...我们应当尽量考虑全面,将可能出现的异常进行处理,而不是留在那里,任由其发生。 Python 内置了一套 try…except…finally(else)…的异常处理机制,来帮助我们进行异常处理。...如果异常发生在函数嵌套的情况,例如函数 F1— 》函数 F2 ---- 》函数 F3,当 F3产生异常,但 F3 并没有捕获这个异常,那么这个异常会传递到函数 F2 ,如果 F2 中有异常处理则按照函数

63820

python基本常识

多重继承 我们想要实现下列的一些动物,需要用到多重继承: ? ? 设计继承关系,通常,主线都是单一继承下来的,例如,Ostrich继承自Bird。...type需要三个参数,名,基础的基,由于继承的基可以不止是一个,使用要注意元祖的格式,通过type()函数创建的和直接写class是完全一样的,因为Python解释器遇到class定义,仅仅是扫描一下...好比一个员工处理不了一个问题,就把问题抛给他的老板,如果他的老板也处理不了,就一直往上抛,最终会抛给CEO去处理。raise语句如果不带参数,就会把当前错误原样抛出。...python已经封装了常见的系统调用,包括了fork() ,可以程序创建一个进程。...一个进程接到新任务就可以复制出一个子进程来处理新任务,常见的Apache服务器就是由父进程监听端口,每当有新的http请求,就fork出子进程来处理新的http请求。比如如下程序: ?

1K51

python学习笔记-基础

python,所有数据类型都可以视为对象,也可以自定义对象,自定义的对象数据类型就是(Class)的概念。面向对象的三大特点:封装、继承、多态。 1....# class关键字定义,后面object表示Student是从object继承的, class Student(object): # 通过定义特殊的__init__方法,创建...定制 python中有许多特殊用途的函数可以帮助我们定制。 __str__():打印对象,自定义返回的字符串 >>> class Student(object): ......# 执行完except后,最终会到finally语句块(不出现错误,也会执行finally) 错误也是一个class,所有错误类型基本继承自BaseException,使用except,也会将错误的子类一起捕获...当写文件,OS往往不会立即把数据写入磁盘,而是缓存在内存空闲时候再慢慢写入,只有调用close(),OS才保证将没写入的数据写入到磁盘。所以需要with来保证最后会close。

91690

总结(一) Java基础

异常 1,Throwable 异常和错误的父。 2,Error和Exception。...5,JVM如何处理异常 一个方法出现异常,会生成一个异常对象交给jvm,经过一系列操作,jvm通过调用栈找不到能解决异常的方法,最后抛出异常。...基础 1,final 不可继承 方法不可以被重写 final是引用不变,可以修改内存的变量,达到final改变的目的。 2,static 静态方法 加载时候引用 调用方法,其实对象也能调用。...9,Java定义一个不做事且没有参数的构造方法的作用 被子类继承,要实现父构造方法,如果没有这玩意,会编译错误。...13,反射 通过获取他的属性和方法,通过对象调用他的属性和方法。 14,自动装箱和自动拆箱。 基本数据类型和其对象的转换。

32391

C++:15---异常机制

; //只是一条throw,不包含任何表达式 throw;只能出现在catch语句或者由catch语句直接或间接调用的函数之内 如果catch参数是引用类型,catch语句中改变参数值,下一条catch...::MyExcp异常---%s\n", m.getMyExcpStr()); 输入22:调用f函数,f函数throw 3.13;抛出后inDate处理,inDate没有catch语句可以处理,再传递给...2.书写格式 建议函数的声明、定义都写上 我们可以函数指针的声明和定义中指定throw throw异常说明应该出现在函数的尾指返回类型之前 成员函数,应该出现在const以及引用限定符之后,而在...;//抛出异常 } 2.析构函数与异常的关系 上面介绍过,栈展开过程对象会自动调用析构函数销毁 析构函数不可以再放置try语句块,很危险。...(原理类似于函数不能返回一个局部对象的指针) class A{...省略}int main(){try{A* a=new A;throw a;//错误}} 4.栈展开过程的内存泄漏 若一个指针对象释放之前抛出异常

77520

Python基础常见面试题总结

继承的构造(init()方法)不会被自动调用,它需要在其派生的构造亲自专门调用调用的方法,需要加上基名前缀,且需要带上self参数变量。...区别于调用普通函数并不需要带上self参数 Python总是首先查找对应类型的方法,如果它不能在派生中找到对应的方法,它才开始到基逐个查找。...super面向对象继承中代指父,书写方法super(名,self).属性或者方法或super().属性或者方法 super方法可以增加之间调用的灵活性,当父名发生变化时不必修改 super方法的多继承可以简化代码...静态方法:是既不是用的属性又不使用对象的属性,由或者对象调用的方法,依赖python装饰器@staticmethod来实现 方法:只使用的静态变量,一般都是由调用,依赖python装饰器...as e: print(str(e)) 主动抛出异常: raise TypeError('出现不可思议的异常')#TypeError可以是任意的错误类型 47、简述 yield和yield

1.8K20

再谈 Python 继承(译)

继承与组合之间的冲突就和面向对象编程一样古老。一些最新的语言,如 Go 和 Rust,证明了你不需要继承也能编写代码。但是具体 Python 语言中,有什么实用的继承的方法呢?...和实例命名空间混淆。如果你一个继承自一个或多个基中有一个属性 self.x,那么你就需要研究并耗费脑力来找出 x 的来源。阅读代码如此,调试也如此。...虽然 Python 有双下划线前缀(__x)的概念来处理这种情况,但这被认为是不可取的,因为它更像是君子协定。 问题在于,如果不是各方面都知情,就不可能达成知情共识。...协议(Protocol)通过使用结构子类型来避免继承。它是 Python 3.8 添加的,但是 typing-extensions 可以让它最低 Python 3.5 可用。...这一点文档系统往往处理得不好,你不得不在阅读跳来跳去。 ---- 当面对这样的代码,想摆脱子类的桎梏,有两个选择: 对进行包装。不要让它成为 self 的一部分,而是把它存储一个实例属性

22250

python语法

就像上面的代码,self就代表的pp这个对象。 定义里面的属性,属于的,不属于对象,直接可以使用使用名.属性名调用,如:上段代码的Person.name。 属于的字段称为静态字段。...通过self调用的称为动态字段(比如说:__init__调用的字段)。 不能直接访问对象的属性,对象可以直接访问的属性。...一个定义静态方法的办法:直接在方法上面添加@staticmethod,去掉方法的self。因为self代表的是一个对象定义的静态方法可以使用调用,也可以使用对象调用。...对象的属性:定义一个方法,该方法上添加@property, 就把该方法变成了对象的一个属性。访问的方式:对象名.属性名   pp.property   后面没有小括号。...Foo()()的效果就等于 f1=Foo() f1(),这两步 继承创建子类的时候子类名后面的括号里写上父的名字,就继承了父

1.2K30

Python的异常概念介绍以及处理

一、什么是异常处理 定义:异常处理就是我们Python,经常看到的报错信息,例如;NameError TypeError ValueError等,这些都是异常。...异常是一个事件,改事件会在程序执行过程中发生,影响程序的正常执行,一般情况下,python无法处理程序时就会发生异常,异常Python的一个对象,表示一个错误,当Python脚本发生异常,我们需要捕获并处理异常...二、异常处理Python脚本出现异常的时候我们怎么处理那?...,异常信息:被除数为0') 三、抛出异常 Python中使用raise语句抛出一个指定的异常,我们可以使用或实例参数调用raise语句引发异常。...OSError 操作系统错误 WindowsError 系统调用失败 ImportError 导入模块/对象失败 LookupError 无效数据查询的基 IndexError 序列没有此索引(index

58210

Python异常及处理方法总结

调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理...1 异常类型 1.1 Python内置异常 Python的异常处理能力是很强大的,它有很多内置异常,可向用户准确反馈出错信息。Python,异常也是对象,可对它进行操作。...Python还维护着traceback(跟踪)对象,其中含有异常发生与函数调用堆栈有关的信息。记住,异常可能在一系列嵌套较深的函数调用引发。...程序调用每个函数Python会在“函数调用堆栈”的起始处插入函数名。一旦异常被引发,Python会搜索一个相应的异常处理程序。...如果当前函数没有异常处理程序,当前函数会终止执行,Python会搜索当前函数的调用函数,并以此类推,直到发现匹配的异常处理程序,或者Python抵达主程序为止。

2K40

2018年8月2日魔法方法,异常处理,类属性,方法,静态方法

(1)常见魔法方法 输出 __str__(): 输出当前对象 在内存的地址 十六进制表示字符串! __repr__(): 用于交互模式下,直接操作变量~获取变量数据的定义!...__repr__方法 定义的内容进行显示 而重写__str__后你会发现,直接输出对象并没有按我们__str__方法定义的内容进行输出,只有通过 print 对象名后输出的信息才是按照__...__:查看当前类型的所有子类 面向对象的多态:分为角色多态和行为多态: 角色多态:多继承体现的一个对象可以同时属于多个类型[多继承继承的多个类型]代码运行过          程,根据不同的使用场景...被调用") # 创建对象 p = Person("tom") # 调用方法:可以通过对象调用,也可以通过类型名称调用 # 如果我们的需求~需要操作当前类型,建议使用方法:soso few,这种情况很少...异常处理的意义就是: 当程序运行中出现要捕捉的异常,程序会自动捕捉该异常,让程序继续向下运行,防止程序遇到异常的时候 直接崩溃的情况!

52230
领券