python继承

Python之绑定方法与非绑定方法

烂漫一生 提交于 2020-03-21 05:48:47
类中定义的函数分成两大类 1、绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入) 1. 绑定到类的方法:用classmethod装饰器装饰的方法。 为类量身定制 类.boud_method(),自动将类当作第一个参数传入 (其实对象也可调用,但仍将类当作第一个参数传入) 2. 绑定到对象的方法:在类内部没有被任何装饰器装饰的方法。 为对象量身定制 对象.boud_method(),自动将对象当作第一个参数传入 (属于类的函数,类可以调用,但是必须按照函数的规则来,没有自动传值那么一说) 绑定给对象的方法(略) 绑定给类的方法(classmethod)   classmehtod是给类用的,即绑定到类,类在使用时会将类本身当做参数传给类方法的第一个参数(即便是对象来调用也会将类当作第一个参数传入),python为我们内置了函数classmethod来把类中的函数定义成类方法 class Foo(): def bar(self): print('bar') @classmethod # 把一个方法绑定给类:类.绑定到类的方法(),会把类本身当做第一个参数自动传递到类的方法里面 def test(cls,x): print(cls,x) # 拿到一个类的内存地址后,就可以实例化或者引用类的属性了 # # print(Foo.bar) # # print(Foo.test) f

Python学习之==>面向对象编程(一)

时间秒杀一切 提交于 2020-03-21 01:44:46
一、面向对象与面向过程   面向对象与面向过程是两种不同的编程范式,范式指的是按照什么方式去编程、去实现一个功能。不同的编程范式本质上代表对各种不同类型的任务采取不同的解决问题的思路。 1、面向过程编程   角色是执行者,把一个项目按照一定的顺序,从头到尾一步步执行下去。这种思想好理解,但只要前面一个步骤变了,后面的步骤也要跟着变,维护起来比较麻烦。 2、面向对象编程   角色是指挥者,把一个项目分成一个个小的部分,每个部分负责一方面的功能,整个项目由这些部分组合而成一个整体。类似一个机关,分为各个职能部门,只要符合一定的前提就行。面向对象的思想适合多人分工合作。   面向对象是包含面向过程思路的,比如定义类中的方法,每个小方法、小功能还是面向过程的的思想。   面向对象与面向过程的主要区别就是:面向对象可以使程序更加容易更改和扩展。 二、面向对象的特性 1、类   Class,相当于一个种类、一个模型。一个类就是对一类拥有相同属性的对象的抽象、蓝图、原形。在类中定义了这些对象都具备的属性、共同的方法。 2、对象(实例)   Object,根据模型造出来的具体的东西。一个对象就是一个类实例化后实例。一个类必须经过实例化后才能在程序中调用,一个类可以实例化多个对象,每个对象也可以有不同的属性。(对象就是实例,两者是一个意思) 3、实例化   初始化一个类,创造一个对象

python 知识回顾

两盒软妹~` 提交于 2020-03-20 22:12:04
第一章:搭建编程环境 1.在Windows系统中搭建Python编程环境。     1.1 安装Python     访问http://python.org/downloads/ ,点击下载到本地,后安装。   1.2安装文本编辑器(IDE)     访问https://www.jetbrains.com/zh/pycharm/specials/pycharm/pycharm.html? 下载pycharm,后安装。 第二章:变量和简单数据类型 1.变量    命名和使用:变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头;         变量名不能包含空格,但可使用下划线来分隔其中的单词;         不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词;         变量名应既简短又具有描述性;         慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。 2.字符串:用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。    2.1使用方法修改字符串的大小写。     title() 以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写;     lower()将字符串先转换为小写;   2.2合并(拼接)字符串。     加号(+ )来合并字符串。   2

python之面向对象

ε祈祈猫儿з 提交于 2020-03-20 18:25:50
一、对象的定义 对象是有属性和方法组成的,在实际环境中也就是对象本身的变量和函数!比如一条鱼,眼睛和尾巴就是属性,会游泳就是他的技能! 基础类的声明: class Fish(object): eyes = 2 def get_eye(self): return self.eyes def set_eye(self, eye): self.eyes = eye 二、类的三大特性 (一)、封装 有些时候我们不希望把对象的属性公开,就可以把它设为私有,python并没有像其他语言对成员的权限控制系统,如private和protected,默认情况下,python的所有属性都是公有的,可以被访问到,要设成私有,则在前面加双下划线,如"__eye",在类外部调用的时候,早需要把他进行封装,一般是把该属性放在一个可以访问到的方法里,提供调用,如下: class Fish(object): __eyes = 2 def get_eye(self): return self.__eyesfish = Fish()print(fish.get_eye()) fish = Fish() print(fish.get_eye()) (二)、继承 继承可以使子类拥有父类的属性和方法,并且可以重些这些方法,加强代码的复用性,python中子类可以有多个父类,但是不建议这样使用,一般会产生重复调用的问题

python之集合,函数,装饰器

偶尔善良 提交于 2020-03-20 18:24:39
本节主要内容如下:   1. set集合   2. 函数      -- 自定义函数      -- 内置函数   3. 装饰器 一. set 集合:       一个无序且不重复的序列。       tuple算是list和str的杂合(杂交的都有自己的优势,上一节的末后已经显示了),那么set则可以堪称是list和dict的杂合.       set拥有类似dict的特点:可以用{}花括号来定义;其中的元素没有序列,也就是是非序列类型的数据;而且,set中的元素不可重复,这就类似dict的键.       set也有继承了一点list的特点:如可以原处修改(事实上是一种类别的set可以原处修改,另外一种不可以).   1.2 集合的创建:    1 s1 = {11,22,11,33,22} #第一种创建方法 2 print(s1) 3 4 {33, 11, 22} 1 s2 = set([11,22,11,33,22]) #第二种创建方法 2 print(s2) 3 4 {33, 11, 22} 1 s3 = set() #创建一个空的集合   例子: 1 s4 = set('chooses') 2 print(s4) 3 print(type(s4)) 4 5 {'s', 'c', 'e', 'o', 'h'} 6 <class 'set'> 注:

基于python开发的口罩供需平台

不问归期 提交于 2020-03-18 22:32:08
主要是对需求表Product进行设计,在此项目中,我们需要标题、联系人、电话等字段。可参考models.py文件。 设计字段如下: ​ class Product(models.Model): list_display = ("title", "type", "location") title = models.CharField(max_length=100,blank=True, null=True) type = models.IntegerField(default=0) pv = models.IntegerField(default=0) contact = models.CharField(max_length=10,blank=True, null=True) location = models.CharField(max_length=20,blank=True, null=True) phone = models.CharField(max_length=13, blank=True, null=True) weixin = models.CharField(max_length=50, blank=True, null=True) status = models.BooleanField(default=False) timestamp = models

python笔记二

一曲冷凌霜 提交于 2020-03-18 21:23:45
# 类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。 # 通过定义一个特殊的__init__方法,在创建实例的时候,就把属性绑上去 class Student(object): # 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self # Python解释器自己会把实例变量传进去 def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 pass def get_attr(self): print(self.attr1) s = Student(111,222) s.get_attr() # 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__, # 在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 class Student(object): def __init__(self, attr1, attr2): self.attr1 = attr1 self.__attr2 = attr2 pass s = Student(111,222) print(s.attr1) print(s.__attr2) #继承和多态

python类的静态方法和类方法区别

☆樱花仙子☆ 提交于 2020-03-18 14:52:24
先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法。 # coding:utf-8 class Foo(object): """类三种方法语法形式""" def instance_method(self): print("是类{}的实例方法,只能被实例对象调用".format(Foo)) @staticmethod def static_method(): print("是静态方法") @classmethod def class_method(cls): print("是类方法") foo = Foo() foo.instance_method() foo.static_method() foo.class_method() print('----------------') Foo.static_method() Foo.class_method() 实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。 实例方法,第一个参数必须要默认传实例对象,一般习惯用self。 静态方法,参数没有要求。 类方法,第一个参数必须要默认传类,一般习惯用cls。 静态方法、类方法使用区别或者说使用场景 1、类方法用在模拟java定义多个构造函数的情况。

自动化测试神器 之 python unittest 断言

北慕城南 提交于 2020-03-18 11:58:06
  自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest 提供了一个比较完整的断言方法。unittest框架测试框架提供的方法比较多,而且很多方法在自动化测试的时候不会使用到,所以我这边总结一下我认为比较常用的测试方法,用最直白的话解释了一下。 序号 方法 解释 1 assertEqual(a, b) 判断ab是否相等 2 assertNotEqual(a, b) 判断ab不相等 3 assertIs(a, b)  判断a是b 4 assertIsNot(a, b) 判断a不是b 5 assertIsNone(a) 判断a是不是None 6 assertIsNotNone(a) 判断a不是None 7 assertIn(a,b) 判断a在b中,此时a与b可以相等 8 assertNotIn(a, b) 判断a不在b中 9 assertIsInstance(a, b) 判断a是否属于b的实例 10 assertNotIsInstance(a, b) 判断a不属于b的实例 11 assertGreater(a, b) 判断a > b 12 assertGreaterEqual(a, b) 判断a >= b 13 assertLess(a, b) 判断a < b 14

Python下简易的单例模式详解(转)

狂风中的少年 提交于 2020-03-18 03:48:10
Python 下的单例模式 要点: 1.某个类只能有一个实例; 2.它必须自行创建这个实例; 3.它必须自行向整个系统提供这个实例 方法:重写new函数 应该考虑的情况: 1.这个单例的类可能继承了别的类 2.这个单例的类还有可能要接收参数来实例化 要点: 实例化的过程其实不是直接调用init的,首先是new分配一块空间来创建实例,再由init对这个实例进行初始化.我们无法阻止new和init的调用,我们只能是限制他们的内容,以此使他们能达到单例的目的 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class people( object ): def __new__( cls , * args, * * kargs): return super (people, cls ).__new__( cls ) def __init__( self ,name): self .name = name def talk( self ): print ( "hello,I am %s" % self .name) class student(people): def __new__( cls , * args, * * kargs): if not hasattr ( cls ,