python继承

Python集训营45天—Day07 (面向对象编程进阶)

删除回忆录丶 提交于 2019-11-30 13:24:55
目录 1. @property装饰器 2. 魔法方法 3. 类属性和实例属性 4.静态方法和类方法 5. 单继承和多继承 6. 多态 7. del 方法 序言:上个章节我们了解了面向对象的基础知识,这个章节我们将对面向对象的知识体系进行进一步的探究 1. @property装饰器 ​ 上一章,我们在说属性的访问权限时,虽然我们不建议将属性设置为私有的,但是如果直接将属性直接暴露给外界也是有问题的,比如我们没办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的, 但是 校验属性的逻辑是在方法里的,我们没办法让其通过 实例.属性 进行赋值的时候 也去走我们 校验属性的那一套逻辑。如果我们想做到这一点,我们则需要使用 @property 装饰器来包装 getter 和 setter方法 # -*- coding:utf-8 -*- """ @Property 装饰器 version:0.1 author:coke """ class Person(object): def __init__(self,name,age): self.__name = name self.__age = age #访问器 @property def name(self): return self.__name #访问器 - getter方法

python面向对象基础

心不动则不痛 提交于 2019-11-30 13:16:50
一、面向过程VS面向对象 面向过程 优点 :极大的降低了写代码的复杂度,只需要顺着执行的步骤,堆叠代码即可。 缺点 :一套流水线或者流程下来是用来解决一个问题,代码牵一发而动全身。 面向对象 优点 :解决了程序的扩展性。对某一个对象单独修改,会立刻反映到整个体系中,如对游戏中一个人物参数的特征和技能修改都很容易。 缺点 :可控性差。 二、初识类和对象 1、类 类的声明 ''' class 类名: '类的说明文档' 类体 ''' # 创建一个类 class Student : # 类名一般开头大写 class_num = 'robot3' def stu_speak ( self ) : print ( 'student is speaking!' ) 类的两种作用:属性引用和实例化 属性引用(类名.属性) class Student : class_num = 'robot3' def stu_speak ( self ) : print ( 'student is speaking!' ) print ( Student . class_num ) # 查看学生的班级属性 print ( Student . stu_speak ) # 引用学生的说话方法 # output robot3 < function Student . stu_speak at

Python Django 生命周期 中间键 csrf跨站请求伪造 auth认证模块 settings功能插拔式源码

余生颓废 提交于 2019-11-30 12:33:50
一 django 生命周期 二 django中间键 1.什么是中间键    官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。 简单来说就相当于django门户,保安:它本质上就是一个自定义类,类中定义了几个方法。 请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models); 响应走的时候也需要经过中间件才能到达web服务网关接口 2.中间件用途: #1.网站全局的身份校验,访问频率限制,权限校验...只要是涉及到全局的校验你都可以在中间件中完成 #2.django的中间件是所有web框架中 做的最好的 3.注意:   django默认有七个中间件,但是django暴露给用户可以自定义中间件并且里面可以写五种方法   默认的七个中间键 五个方法及执行时机: ##下面的从上往下还是从下往上都是按照注册系统来的###需要我们掌握的方法有 1.process_request(self,request)方法 规律: 1.请求来的时候 会经过每个中间件里面的process_request方法(从上往下) 2.如果方法里面直接返回了HttpResponse对象 那么不再往下执行

面向对象

我与影子孤独终老i 提交于 2019-11-30 11:54:32
今天给大家介绍一下什么是面向对象。 我们都知道python是面向对象的程序设计,那什么是面向对象? 面向对象的程序设计的核心是对象。简单的理解对象的话,就是把自己当作上帝,上帝眼里世间存在的万物都是对象,不存在的也可以自己创造。 不管是面向对象还是面向过程,都有自己的优点,面向对象的优点 是解决了程序的扩展性,对某一个对象的单独修改会立刻反映导整个体系中,例如对游戏中一个人物参数的特征和技能修改都很容易(因为你是上帝,你想怎么改就怎么改) 我们先来了解python中的类和对象 类:具有相同特征的一类事物(人,猫,狗)     写法:class 类名:          属性          方法    类的命名: 首字母大写,以大小写分割单词,不使用下划线。    定义一个类(如下图):       对象:具体的某一事物(张三,楼下小黑)       万物皆对象    属性:用来描述操作对象 ,属性名首字母小写,以大写字母分割单词    创建对象属性(如下图):    然后来了解面向对象的三大特征: 继承      ----单继承      ----多继承 封装 多态 1.继承:是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类有称为基类或超类,新建的类称为子类或派生类 python中的继承分为单继承和多继承(如下图): 查看继承: SubClass1.

python 简单工厂模式

自古美人都是妖i 提交于 2019-11-30 10:29:44
abc 是抽象类模块 abc.ABC 是继承抽象类 也可直接继承 (metaclass=ABCMeta) abc.abstractmethod 是定义抽象方法 简单工厂模式:通过接口创建对象,但不会暴露对象创建逻辑 在设计模式中主要用于抽象对象的创建过程,让用户可以指定自己想要的对象而不必关心对象的实例化过程。 这样做的好处是用户只需通过固定的接口而不是直接去调用类的实例化方法来获得一个对象的实例,隐藏了实例创建过程的复杂度, 解耦了生产实例和使用实例的代码,降低了维护的复杂性。 http请求共6种(get,post,put,delete,options,head),现在我们用工厂模式来生成不同的请求对象. import abc class Method(abc.ABC): @abc.abstractmethod def request(self, url): pass class Get(Method): def request(self, url): print("Get 请求地址:%s" % url) class Post(Method): def request(self, url): print("Post 请求地址:%s" % url) class Delete(Method): def request(self, url): print("Delete 请求地址:%s

Python class and object

你离开我真会死。 提交于 2019-11-30 05:49:35
# Python继承 class Person(object): """人""" def __init__(self, name, age): self._name = name self._age = age @property def name(self): return self._name @property def age(self): return self._age @age.setter def age(self, age): self._age = age def play(self): print('%s正在愉快的玩耍.' % self._name) def watch_av(self): if self._age >= 18: print('%s正在观看动作片.' % self._name) else: print('%s只能观看《熊出没》.' % self._name) class Student(Person): """学生""" def __init__(self, name, age, grade): super().__init__(name, age) self._grade = grade @property def grade(self): return self._grade @grade.setter def grade(self,

Python中单下划线和双下划线

孤街浪徒 提交于 2019-11-30 05:33:57
Python中单下划线和双下划线: 一、分类 (1)、以单下划线开头,表示这是一个 保护成员 ,只有类对象和子类对象自己能访问到这些变量。 以单下划线开头的变量和函数被默认是内部函数,使用from module import *时不会被获取,但是使用import module可以获取。 (2)、以单下划线结尾仅仅是为了区别该名称与关键词 (3)、双下划线开头,表示为 私有成员 ,只允许类本身访问,子类也不行。 在文本上被替换为_class__method (4)、双下划线开头,双下划线结尾。一种约定,Python内部的名字,用来区别其他用户自定义的命名,以防冲突。是一些 Python 的“魔术”对象,表示这是一个特殊成员,例如:定义类的时候,若是添加__init__方法,那么在创建类的实例的时候,实例会自动调用这个方法,一般用来对实例的属性进行初使化,Python不建议将自己命名的方法写为这种形式。即以双下划线开头的方法和变量不会被继承 [ 作者:别拽我红领巾 链接:https://www.zhihu.com/question/19754941/answer/336260809 来源:知乎 ] 二、例子 转载:python 中的下划线 https://segmentfault.com/a/1190000002611411 来源: https://www.cnblogs.com

models数据模型学习笔记

我与影子孤独终老i 提交于 2019-11-30 04:15:31
每个应用一般都会定义一个或多个models,这个数据models实际上是与数据库相关的,models中的每个属性都是数据库当中的一个字段,每个字段是数据库中的一个列。在models中定义的每个类相当于数据库当中的table.如 [python] view plain copy class Musician(models.Model):   First_name = models.CharField(max_length = 50 )   Last_name = models.CharField(max_length = 50 )   Instrument = models.CharField(max_length = 100 )    class Album(models.Model):   Artist = models.ForeignKey(Musician)   Name = models.CharField(max_length = 100)   Release_date = models.DateField()   Num_starts = models.IntegerField() 如上所示,每个class的属性都是models中的某些字段类的实例,如Name是models.CharField的实例。Models中有许多的字段属性类。并且这些字段属性类均有一些参数

玩转Django2.0---Django笔记建站基础五

谁说胖子不能爱 提交于 2019-11-30 03:33:22
  5  模板   Django作为web框架,需要一种很便利的方法去动态地生成HTML网页,因此有了模板这个概念。模板包含所需HTML的部分代码以及一些特殊语法   Django可以配置一个或多个模板引擎(甚至是0,如果不需要使用模板),模板系统有Django模板语言(Django Template Language, DTL)和Jinja2。Django模板语言是Django内置的模板语言,Jinja2是当前Python最流行的模板语言。      5.1  变量与标签   变量是模板中最基本的组成单位,模板变量是由视图函数生成的。如果变量没有被视图函数生成,那么模板引擎解析HTML时,模板变量不会显示在网页上。变量以{{ variable }}表示,variable是变量名,变量的类型可以是Python支持的数据类型,使用如下: # variable为字符串类型或整型,如variable = "Python" {{ variable }} # 输出Python # variable为字典或数据对象,通过点号(.)来访问其属性值 # 如variable = {"name": "Lily", "info": {"home": "BeiJing", "homeplace": "ShangHai"}} {{ variable.name }} # 输出Lily {{ variable

Python 手册目录

喜夏-厌秋 提交于 2019-11-30 02:35:44
Python常用单词 Python 第一章 Python基础 Python简介 Python安装 Python入门 第二章 Python运算符 Pycharm使用 While 循环 格式化输出 常用运算符 初识—编码 第三章 Python基础数据类型一 整型和布尔值 字符串 第四章 Python基础数据类型二 列表 元组 第五章 Python 基础数据类型三 字典 第六章 小数据池 小数据池 深浅拷贝 集合 第七章 Python基础数据类型补充 数据类型方法 — 补充 以后会编程会遇到的坑 编码 — 进阶 第八章 Python基础文件操作 读操作 写操作 +模式 其他操作 第九章 Python基础初识函数 函数初识 函数的参数 第十章 Python基础函数进阶 函数的动态参数 函数的名称空间 函数的嵌套及gloabal、nonlocal 第十一章 Python基础迭代器 函数名的使用及f-strings使用 迭代器 第十二章 Python基础生成器 生成器 推导式 内置函数一 第十三章 内置函数二 内置函数二 闭包 第十四章 Python基础装饰器 装饰器介绍 标准版装饰器 第十五章 装饰器进阶及递归 带参数装饰器 多个装饰器装饰一个函数 递归 第十六章 自定义模块 模块的简介 import from xxx import xxx 导入顺序 time模块 datetime模块