python继承

Python 面向对象Ⅳ

雨燕双飞 提交于 2019-12-02 08:47:51
类的继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。 通过继承创建的新类称为 子类 或 派生类 ,被继承的类称为 基类 、 父类 或 超类 。 继承语法 在python中继承中的一些特点: 1、如果在子类中需要父类的构造方法就需要显示的调用父类的构造方法,或者不重写父类的构造方法。详细说明可查看:python 子类继承父类构造函数说明。 2、在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。区别在于类中调用普通函数时并不需要带上 self 参数 3、Python 总是首先查找对应类型的方法,如果它http://www.xuanhe.net/不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。 如果在继承元组中列了一个以上的类,那么它就被称作"多重继承" 。 语法: 派生类的声明,与他们的父类类似,继承的基类列表跟在类名之后,如下所示: 以上代码执行结果如下: 你可以继承多个类 你可以使用issubclass()或者isinstance()方法来检测。 issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup) isinstance(obj, Class)

python 面向对象

风格不统一 提交于 2019-12-02 06:43:57
面向对象 对象: 是指现实中的物体实体化 ,对象有很过属性(名字、年龄..),也有很多行为(学习、吃饭..), 实例即对象。 对象同时也是通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法。对象可以包含任意数量和类型的数据。 实例化 :创建一个类的实例,类的具体对象化,实例就是类的实例化, d1 = gog(),d1即为实例 类 :拥有相同属性和方法(行为)的对象划为一组,称为类,类是创建对象的工具 方法 :类中定义的函数 类变量 :在类中被定义的变量,通常以self.variable的形式被定义,类变量通常不作为实例变量使用 方法重写 :如果从父类继承的方法不能满足子类的需求,可以对其进行修改,这个过程叫方法的覆盖,也叫方法的重写 继承 :及一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。 类定义   语法格式   class 类名(继承列表):     """类的文档字符串"""     类变量的定义      实例方法 的定义     类方法的定义(@classmethod)     静态方法的定义(@staticmethod

前端模板层

会有一股神秘感。 提交于 2019-12-02 06:40:39
目录 Django模板系统 常用语法 变量 (模板传值)模板能够接收的数据类型 Filters(过滤器) default length filesizeformat slice date safe truncatechars truncatewords cut join timesince timeuntil 其它过滤器(了解) Tags标签 for循环 if判断 with csrf_token 自定义标签my_tags和过滤器filter 注释模板语法的注释 注意事项 模版导入入和继承 模版导入: 模版继承 继承母板 块(block) 组件 继承详细的讲解 静态文件的配置 静态文件相关 {% static %} {% get_static_prefix %} simple_tag inclusion_tag Django模板系统 官方文档 你可能已经注意到我们在例子视图中返回文本的方式有点特别。 也就是说,HTML被直接硬编码在 Python代码之中。 def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html) 尽管这种技术便于解释视图是如何工作的

全网最热Python3入门+进阶 更快上手实际开发✍✍✍

十年热恋 提交于 2019-12-02 05:59:29
全网最热 Python3入门+进阶 更快上手实际开发 一 .python的基本数据类型 1.组/序列的概念 注意:(python中表示组的概念有很多种) (1)列表 [1,2,3,4,5,6] list类型 列表中还可以嵌套列表:[[1,2],[2,3] 访问列表: [1,2,3,4][3]/[0:2]/[-1:] :形式获取的还是一个列表,哪怕列表中只有一个元素 [-1:]最后一个元素 追加列表: [1,2,3]+[5,6,7] [1,2,3]*3 (2)元组 (1,2,3,4,‘d’,ture) tuple 类型 访问元组:(1,2,3,5)[0] (1,2,3,4)[0:2] 追加:(1,2,3)+(4) (1,2,3)*3 注意:单一元素情况下 type((1)) 整型 因为单一元素python会把你当成数学运算符号,而列表不会 定义只有一个元素的元组 (())/(1,) 总结 str /list/tuple 序列 (有顺序,每个元素有序号) 共有的操作/特性: 'hello world'[2] 访问 [1,2,3,4,5][0:3] 切片 ‘hello world’[0:8:2] 切片 3 in/not in [1,2,3] bool类型 len([1,2,3,4]) max/min([1,2,3,4,5]) (3)集合 set (无序,无重复) 集合的操作: len(

Python接口测试框架实战与自动化进阶✍✍✍

帅比萌擦擦* 提交于 2019-12-02 05:50:36
Python接口测试框架实战与自动化进阶 一、fiddler在工作中的运用 1、如何抓接口  抓紧手机端接口    ①、在电脑终端输入:ipconfig ,找到电脑ip    ②、打开手机,连接WiFi,进入WiFi详情,改用手动代理,将ip设置为电脑端的ip,端口默认(8888)      ③、打开fiddler,找到并打开Fiddler Options ,选择Connections栏,做如下改动:    这样就可以尝试抓取接口了。 注: Python requests中文文档参考: http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 二、unittest使用 python自带的包 1、unittest简单使用 使用 unittest的test类:TestCase ,重载相关方法: import unittest class TestMethod(unittest.TestCase): @classmethod def setUpClass(cls): print('重载setUpClass类方法,类实例化(初始化)时调用') @classmethod def tearDownClass(cls): print('重载tearDownClass方法,所有方法执行完后调用') def setUp

python学习笔记之--继承

江枫思渺然 提交于 2019-12-02 05:35:20
#继承:子类具备所有父类的共有变量和共有方法(除私有的) 如果子类没有定义__init__构造方法,会自动调用父类的。 好处:站在老爸的肩膀上,增加属性,增加方法 在原有的基础上进行扩展。 class Person: count = 0 #类变量 nation = "中国" def __init__(self,name,gender): self.name = name self.gender = gender Person.count +=1 print("创建了一个新的人") def get_name(self):#实例方法,必须要实例化 return self.name class ChinaPerson(Person): #如果子类没有定义__init__构造方法 #会自动调用父类的。 def __init__(self,name,gender): Person.__init__(self,name,gender) #调用父类的构造函数:类名+构造函数 def get_gender(self): return self.gender cp = ChinaPerson("吴老师","男") print(cp.count) print(cp.name) print(cp.gender) print(cp.get_name()) C:\Users\dell\Desktop\练习

python字符串内置函数

孤街浪徒 提交于 2019-12-02 02:59:49
1、字符串 定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串特性:1.只能存放一个值2.不可变3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序补充:  1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l\thf'  2.unicode字符串与r连用必需在r前面,如name=ur'l\thf' 2、字符串常用操作 # 1字母处理: .upper() # 全部大写 .lower() # 全部小写 .swapcase() # 大小写互换 .capitalize() # 首字母大写,其余小写 .title() # 首字母大写 a='helLO' print(a.upper()) # 全部大写 print(a.lower()) # 全部小写 print(a.swapcase()) # 大小写互换 print(a.capitalize()) # 首字母大写,其余小写 print(a.title()) # 首字母大写 View Code # 2格式化相关 .ljust(width) # 获取固定长度,左对齐,右边不够用空格补齐 .rjust(width) # 获取固定长度,右对齐,左边不够用空格补齐 .center(width) #

python中的元类metaclass

♀尐吖头ヾ 提交于 2019-12-02 02:36:52
这个非常的不常用,但是像ORM这种复杂的结构还是会需要的,详情请看: http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python 元类最常用作类工厂。 当通过调用类创建对象时,Python通过调用元类来创建一个新类(当执行“ class”语句时)。 因此,将元类 与常规 方法 __init__ 和 __new__ 方法 结合使用 ,可以使您在创建类时做“额外的事情”,例如在某些注册表中注册新类或将其完全替换为其他类。 class 执行 该 语句时,Python首先将 class 语句 的主体 作为普通代码块执行。 生成的名称空间(一个dict)保存了将来类的属性。 通过查看要成为类的基类(继承了元类),要成为 __metaclass__ 的类(如果有) 的 属性或 __metaclass__ 全局变量来确定元类。 然后使用该类的名称,基数和属性调用该元类以实例化它。 但是,元类实际上定义了类的 类型 ,而不仅仅是它的工厂,因此您可以使用它们做更多的事情。 例如,您可以在元类上定义常规方法。 这些元类方法就像类方法,因为它们可以在没有实例的情况下在类上调用,但是它们也不像类方法,因为它们不能在类的实例上被调用。 type.__subclasses__() 是 type 元类 上方法的示例 。

python 类中的self

血红的双手。 提交于 2019-12-02 02:36:31
今天工作中写python代码,在def函数定义的时候总要写一个self参数,不明白何意思…百度了一下这个 self代表的是类的实例 ,不是类,所以学习一下相关知识。 下面这个Sms类中的函数是用post请求获取数据,获取的数据是json格式,取json中的body 在send函数中我们就定义了变量self,但其实在函数内部并没有用到它 import requests import json class Sms(): def send(self, url, body): request = requests.post(url, json=body) return request.json() 在调用的时候也需要写这个self: def signature(self):   request = self.interf.send(self.yam.read('url')) # 这里的read是另一个函数 那么明确self的用处: 1)self 只有在类的方法中才会有 ,独立的函数或方法是不必带有self的。 2)self 在定义类的方法时是必须有的 ,虽然在调用时不必传入相应的参数。 3)self名称不是必须的,在python中self不是关键词,定义成a或b或其他名字都可以,只是约定俗成我们定义成了self。 4)self指的是 类实例对象本身,不是类本身。     例1: class

python 面向对象进阶

柔情痞子 提交于 2019-12-02 00:54:56
isinstance() 和 issubclass() isinstance(obj,cls) 检查obj是否是类cls的对象 issubclass(sub,super) 检查sub类是否是super类的派生类 class Aoo: pass class Bar(Aoo): pass r = Bar() print(isinstance(r,Aoo)) print(issubclass(Bar,Aoo)) __doc__ class C: "描述信息" pass class A(C): pass print(A.__doc__) # __doc__属性无法继承给子类 __getattribute__ 当__getattribute__与__geetattr__同时存在,只会执行__getattribute__,除非__getattribute__在执行过程中抛出异常AttributeError class Aoo: def __init__(self,x): self.x=x def __getattr__(slef,item): print("sb") def __getattribute__(self,item): print("getattribute") raise AttributeError("异常") r = Aoo(20) print(r.x) r.xxx _