python 继承 多态 异常

12.2.2 继承

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”,继承的过程,就是从一般到特殊的过程。

继承概念的实现方式主要有2类:实现继承、接口继承。
实现继承是指使用基类的属性和方法而无需额外编码的能力。
接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力(子类重构爹类方法)。

class RichMan(object):
 def __init__(self): 
 self.money = 100000000 
 self.company = "阿里巴巴" 
 def tell_moto(self): 
 print("我没有钱")
  class Son(RichMan): 
  pass
 if __name__ == '__main__': 
 s = Son() 
 print(s.money) 
 print(s.company) 
 print(s.tell_moto()) 

子类继承父类的时候并不能继承所有的属性和方法(私有)
重写(覆盖):子类继承父类的时候,可以重写方法
注意:重写的时候方法名、参数以及参数的个数必须保持一致

class RichMan(object): 
def __init__(self): 
self.money = 100000000 
self.company = "阿里巴巴" 
self.__house = "北京" 
def tell_moto(self): 
print("我没有钱") 
def __speak(self):
 print("讲英文贼溜") 
 def working(self): 
 print("A员工工作的认真") 
 class Son(RichMan): 
 def working(self): 
 print("B员工工作认真")
  if __name__ == '__main__': 
  s = Son() 
  print(s.money) 
  print(s.company) 
  print(s.tell_moto()) 
  print(s.working())

面试题:python里有没有重载,有没有重写
重载:方法名相同,参数以及参数的个数不同
python里面是没有重载,但是可以实现重载-----通过装饰器
python里面可以多继承
思考问题:A继承B和C,B和C里面都有H(),那么A继承是哪个H()?
广度优先
super关键字 :指针,默认指向的父类

class RichMan(object): 
def __init__(self):
self.money = 100000000 
self.company = "阿里巴巴" 
self.__house = "北京" 
def tell_moto(self): 
print("我没有钱") 
def __speak(self): 
print("讲英文贼溜") 
def working(self): 
print("A员工工作的认真") 
class Son(RichMan,object): 
def working(self):
 print("B员工工作认真") 
 def test(self): 
 self.working() 
 super().working() 
 if __name__ == '__main__': 
 s = Son()
  # print(s.money)
   # print(s.company) 
   # print(s.tell_moto()) 
   # print(s.working()) s.test()
   

12.2.3 多态

python不重要
一、多态
1、定义

一个类的多种形态,如一个文件的格式可以是txt、word、excel等

2、python天生多态

python是动态的强制类型语言,数据类型不需要定义,在归一化的过程中不需要定义一个类,让其它类继承,来解决数据类型的不同

ArrayList a1 = new ArrayList(); 
List l1 = new ArrayList();

13.异常

13.1 了解什么是异常

异常:正常的情况,运行程序的过程中出现问题,BUG(错误不一定是异常)

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常。
异常是Python对象,表示一个错误。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

13.2 处理异常

捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
try代码块
try:
#放的是有可能造成异常的代码
except:
#处理异常

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印默认的出错信息)。
如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

try:num = int(input("请你输入一个数:")) 
result = num + 10 
#except Exception as e: 
except ValueError as e:
 print("出异常") 
 print("在这里处理异常,出现的异常是",e) 
 num = int(input("输入的格式是数字:")) 
 result = num + 10 
 print("结束了")

常见的异常:
import builtins
dir(builtins)
[‘ArithmeticError’, ‘AssertionError’, ‘AttributeError’, ‘BaseException’, ‘BlockingIOError’,
‘BrokenPipeError’, ‘BufferError’, ‘BytesWarning’, ‘ChildProcessError’, ‘ConnectionAbortedError’,
‘ConnectionError’, ‘ConnectionRefusedError’, ‘ConnectionResetError’, ‘DeprecationWarning’,
‘EOFError’, ‘Ellipsis’, ‘EnvironmentError’, ‘Exception’, ‘False’, ‘FileExistsError’, ‘FileNotFoundError’,
‘FloatingPointError’, ‘FutureWarning’, ‘GeneratorExit’, ‘IOError’, ‘ImportError’, ‘ImportWarning’,
‘IndentationError’, ‘IndexError’, ‘InterruptedError’, ‘IsADirectoryError’, ‘KeyError’,
‘KeyboardInterrupt’, ‘LookupError’, ‘MemoryError’, ‘ModuleNotFoundError’, ‘NameError’, ‘None’,
‘NotADirectoryError’, ‘NotImplemented’, ‘NotImplementedError’, ‘OSError’, ‘OverflowError’,
‘PendingDeprecationWarning’, ‘PermissionError’, ‘ProcessLookupError’, ‘RecursionError’,
‘ReferenceError’, ‘ResourceWarning’, ‘RuntimeError’, ‘RuntimeWarning’, ‘StopAsyncIteration’,
‘StopIteration’, ‘SyntaxError’, ‘SyntaxWarning’, ‘SystemError’, ‘SystemExit’, ‘TabError’,
‘TimeoutError’, ‘True’, ‘TypeError’, ‘UnboundLocalError’, ‘UnicodeDecodeError’,
‘UnicodeEncodeError’, ‘UnicodeError’, ‘UnicodeTranslateError’, ‘UnicodeWarning’, ‘UserWarning’,
‘ValueError’, ‘Warning’, ‘WindowsError’, ‘ZeroDivisionError’, ‘build_class’, ‘debug’, ‘doc’, ‘import’,
‘loader’, ‘name’, ‘package’, ‘spec’, ‘abs’, ‘all’, ‘any’, ‘ascii’, ‘bin’, ‘bool’, ‘breakpoint’, ‘bytearray’,
‘bytes’, ‘callable’, ‘chr’, ‘classmethod’, ‘compile’, ‘complex’, ‘copyright’, ‘credits’, ‘delattr’, ‘dict’, ‘dir’,
‘divmod’, ‘enumerate’, ‘eval’, ‘exec’, ‘exit’, ‘filter’, ‘float’, ‘format’, ‘frozenset’, ‘getattr’, ‘globals’,
‘hasattr’, ‘hash’, ‘help’, ‘hex’, ‘id’, ‘input’, ‘int’, ‘isinstance’, ‘issubclass’, ‘iter’, ‘len’, ‘license’, ‘list’,
‘locals’, ‘map’, ‘max’, ‘memoryview’, ‘min’, ‘next’, ‘object’, ‘oct’, ‘open’, ‘ord’, ‘pow’, ‘print’, ‘property’,
‘quit’, ‘range’, ‘repr’, ‘reversed’, ‘round’, ‘set’, ‘setattr’, ‘slice’, ‘sorted’, ‘staticmethod’, ‘str’, ‘sum’,
‘super’, ‘tuple’, ‘type’, ‘vars’, ‘zip’]
异常的继承关系
BaseException 是所有异常的父类
断言测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值