python继承

python—面向对象设计

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-24 01:15:31
一:三大编程范式 1.面向过程编程 2.函数式编程 3.面向对象编程 (类:把一类事物的相同的特征和动作整合到一起就是类,类是一个抽象的概念) (对象:就是基于类而创建的一个具体的事物 [具体存在的] 也是特征和动作整合到一起) 二:类与对象 (在python2中,分 新式类 与 经典类 ,python3统一都是新式类【新式类,class 类名:】【经典类,class 类名(object)】) class Chinese: #class是关键字,表示类名 pass print(Chinese) p1=Chinese() #实例化过程,创建对象,类名后面加括号 print(p1) 小实例 实例化,由类产生对象的过程叫做实例化,类实例化的结果就是一个对象,或者叫做一个实例 ps: 类中的函数第一个参数必须是self 类中定义的函数叫做 “方法” 类是用来描述一类事物,类的对象指的是这一类事物中的一个个体 是事物就要有属性,属性分为: 1.数据属性:就是变量 2.函数属性:就是函数,在面向对象里通常称为方法 注:类和对象均是用点来访问自己的属性 属性 类是用来描述一类事物,类的对象指的是这一类事物中的一个个体 是事物就要有属性,属性分为: 1.数据属性:就是变量 2.函数属性:就是函数,在面向对象里通常称为方法 注:类和对象均是用点来访问自己的属性 属性 1 class Chinese:

【】Python】异常处理try...except、raise

萝らか妹 提交于 2019-12-24 00:22:11
一、try...except 有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionError 例子: 1 2 3 4 a = 10 b = 0 c = a / b print "done" 运行结果: Traceback (most recent call last): File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in <module> c=a/b ZeroDivisionError: integer division or modulo by zero 我们发现程序因为ZeroDivisionError而中断了,语句print "done" 没有运行。为了处理异常,我们使用try...except,更改代码: 1 2 3 4 5 6 7 8 a = 10 b = 0 try : c = a / b print c except ZeroDivisionError,e: print e.message print "done"    运行结果: integer division or modulo by zero done 这样程序就不会因为异常而中断,从而print "done"语句正常执行。

用python写接口所学到的点

半腔热情 提交于 2019-12-23 20:56:29
一、抽象类 用抽象类定义基类,抽象类中定义相应的接口方法,子类继承实现。 注意:抽象类不可被实例化 使用abc模块下的ABCMeta定义一个抽象类。 abstractmethod来定义一个抽象方法,其抽象方法必须在子类中实现。如果在非抽象类好像可以用 raise NotImplementedError from abc import ABCMeta, abstractmethod class BaseClass(metaclass=ABCMeta): def __init__(self, msg): print("create baseclass!") print(msg) print('----------') @abstractmethod def fn(self): print('implement') 然后使用继承的方法来具体化,还有一种是注册,我不太熟悉 class ChildClass(BaseClass): def __init__(self, msg): super().__init__(msg) def fn(self): super().fn() print('OK') test = ChildClass('hello') test.fn() 运行结果: assert断言 - 判断输入文件路径是否存在,不存在则停止运行。img为文件路径,“”里面为打印的文字警告

python异常处理

早过忘川 提交于 2019-12-23 19:24:05
1.什么是异常 程序出现了错误(在编译或者执行过程中) >>> a Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> a NameError: name 'a' is not defined NameError 表示我们访问了一个没有初始化的变量. 在 Python 解释器的符号表没有找到那个 变量. 任何可访问的变量必须在名称空间里列出. 访问变量需要由解释器进行搜索, 如果请求的名字没有在任何名称空间里找到, 那么将会生成一个 NameError 异常. >>> 1/0 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> 1/0 ZeroDivisionError: division by zero 任何数值被零除都会导致一个 ZeroDivisionError 异常. 2.常见异常种类 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 StopIteration 迭代器没有更多的值 GeneratorExit 生成器

Python错误和异常概念(总)

孤人 提交于 2019-12-23 17:47:50
转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自: 【Edwin博客园】 Python错误和异常概念(总) 1. 错误和异常的处理方式 1.常见的错误 a:NameError if True:SyntaxError f = oepn('1.txt'):IOError 10/0:ZeroDivisionError a = int('d'):ValueError 程序运行中断:KeyboardInterrupt 2.Python-使用try_except处理异常(1) try: try_suite except Exception [e]: exception_block try用来捕获try_suite中的错误,并且将错误交给except处理 except用来处理异常,如果处理异常和设置捕获异常一致,使用exception_block处理异常 # case 1 try: undef except: print 'catch an except' # case 2 try: if undef except: print 'catch an except' case1:可以捕获异常,因为是运行时错误 case2:不能捕获异常,因为是语法错误,运行前错误 -- # case 3 try: undef except

Python——11面向对象编程基础

流过昼夜 提交于 2019-12-23 10:32:44
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhello * 完成日期:2016年7月31日 * 版本号:V1.0 * 程序输入:无 * 程序输出:见运行结果 */ 定义类并创建实例 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个 Person类 如下: class Person(object): pass 按照 Python 的编程习惯,类名以 大写字母开头 ,紧接着是(object),表示该类是从哪个类继承下来的。类的继承将在后面的章节讲解,现在我们只需要简单地从 object 类继承。 有了Person类的定义,就可以创建出具体的 xiaoming、xiaohong 等实例。创建实例使用 类名+() ,类似函数调用的形式创建: xiaoming = Person() xiaohong = Person() 创建实例属性 虽然可以通过 Person 类创建出 xiaoming、xiaohong 等实例,但是这些实例看上除了地址不同外,没有什么其他不同。在现实世界中,区分 xiaoming、xiaohong 要依靠他们各自的名字、性别、生日等属性。 如何让 每个实例拥有各自不同的属性

python学习总结(面向对象进阶)

雨燕双飞 提交于 2019-12-23 09:32:59
------------------类属性和实例属性关系------------------- 1、类属性和实例属性关系 1、实例属性 实例对象独有的属性 2、类属性 类名访问类属性 3、实例中无同名属性时,可访问到类属性,当定义同名实例属性时,则无法访问 4、常用的查找指令 1、vars :查看实例内属性 2、dir :显示类属性和所有实例属性 3、type :显示类型 -------------------方法------------------- 1、实例方法 隐含的参数为类实例self 2、类方法 隐含的参数为类本身cls 3、静态方法 为隐含参数,主要为了类实例也可以直接调用静态方法 4、类名可以调用类方法和静态方法,但不可以调用实例方法 5、实例:  class Test(object): def instancefun(self): print("InstanceFun") print(self) @classmethod def classfun(cls): print("ClassFun") print(cls) @staticmethod def staticfun(): print("StaticFun") -------------------私有化------------------- 1、xx :公有变量 2、_x :单前置下划线,私有化属性或方法

python继承 super()

为君一笑 提交于 2019-12-23 05:43:23
写这篇博文,始于以下问题的探究: 1 #coding:utf-8 2 class A(object): 3 def __init__(self): 4 print 'enter A' 5 print 'leave A' 6 class B(object): 7 def __init__(self): 8 print 'enter B' 9 print 'leave B' 10 11 class C(A): 12 def __init__(self): 13 print 'enter C' 14 super(C, self).__init__() 15 print 'leave C' 16 17 class D(A): 18 def __init__(self): 19 print 'enter D' 20 super(D, self).__init__() 21 print 'leave D' 22 23 class E(B, C): 24 def __init__(self): 25 print 'enter E' 26 B.__init__(self) 27 C.__init__(self) 28 print 'leave E' 29 30 class F(E, D): 31 def __init__(self): 32 print 'enter F' 33 E.__init_

Python继承扩展内置类,

一世执手 提交于 2019-12-23 05:42:35
给已经存在的类添加新的行为,继承是非常好的实现方式。但是如果要改变行为呢?比如在 Python继承扩展内置类, 我们的contact类只允许一个名字和一个邮箱,但是如果要对某些人增加电话号码呢?这里可以通过非常简单的给他增加一个电话号码的属性来实现,但是如果想 这第3个变量在初始化类的时候就可用,就需要重写__init__函数 。 重写 就是在子类里用一个(和超类相同的名字)新的方法来改变或者覆盖超类里的这个方法 。做这个不需要特殊的语法,会自动执行子类新创建的方法而不是超类的方法。以下是在之前Contact类中,使用Friend子类来继承 class ContactList(list): def search(self, name): '''Return all contacts that contain the search value in their name.''' matching_contacts = [] for contact in self: if name in contact.name: matching_contacts.append(contact) return matching_contacts class Contact: all_contacts = ContactList() def __init__(self, name, email):

python 超继承

依然范特西╮ 提交于 2019-12-23 05:42:12
如果在子类里把父类里的函数重写了 这个时候就需要用到超继承 不然调用父类的函数会报错 在重写的函数里写上 比如初始化函数 __init__() def __init__():   super(子类名,self).__init__(父类方法里需要传入的参数) 来源: https://www.cnblogs.com/wind666/p/11785961.html