python继承

Python面向对象 | 抽象类和接口类

ぐ巨炮叔叔 提交于 2019-12-04 15:10:57
一 、抽象类 ( 规范的编程模式 ) 什么是抽象类   抽象类是一个特殊的类,它的特殊之处在于 只能被继承,不能被实例化 。抽象类的本质还是类,指的是一组类的相似性,而接口只强调函数属性的相似性。 为什么要有抽象类   如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性。 抽象类是介于类和接口之间的一个概念,同时具备类和接口的部分特性, 可以用来实现归一化设计。 在python中,并没有接口类这种东西,即便不通过专门的模块定义接口,我们也应该有一些基本的概念 从设计角度去看,如果类是从现实对象抽象而来的,那么抽象类就是基于类抽象而来的。 从实现角度来看,抽象类与普通类的不同之处在于:抽象类中有抽象方法,该类不能被实例化,只能被继承, 且子类必须实现抽象方法 。这一点与接口有点类似,但其实是不同的,即将揭晓答案 抽象类 就是制定一个规则,让其他人按照我的规则写程序。 约定俗称规范,但是有人不按照这个执行。 归一化设计 强制指定规范. 写一个抽象类: from abc import ABCMeta,abstractmethod 需要用到abc模块,在这个类创建的时候指定 metaclass = ABCMeta 在你希望子类实现的方法上加上 @abstramethod 装饰器 举例,支付宝和qq支付,统一支付方式

Python面向对象 | 类方法 classmethod

让人想犯罪 __ 提交于 2019-12-04 14:34:30
类方法:必须通过类的调用,而且此方法的意义:就是对类里面的变量或者方法进行修改添加。 例一个商店,店庆全场八折,代码怎么写呢? class Goods: __discount = 0.8 # 折扣 def __init__(self,name,origin_price): self.name = name self.__price = origin_price @property def price(self): return self.__price * Goods.__discount apple = Goods('apple',5) banana = Goods('banana',8) print(apple.price) print(banana.price) ''' 执行输出: 4.0 6.4 ''' 现在折扣变了,店庆结束,恢复原价。 如何修改__discount变量呢 ?不能这么写。 Goods._Goods__discount = 1 怎么办呢? 定义一个方法,修改属性 class Goods: __discount = 0.8 def __init__(self,name,origin_price): self.name = name self.__price = origin_price @property def price(self): return

Python中的self

三世轮回 提交于 2019-12-04 13:58:53
首先,对于python,只有针对类来说的self才有意义,所以python中的self,说的即是python类中的self。 以下我将结合python类的相关概念叙述,必须明确的是,self只能用在python类的方法(即函数)中。 在我看来,python的类有三个相关概念:属性(即变量)、方法(即函数)、继承。 1.属性(即变量) (1)如果变量定义在类下面而不是类的方法下面,那这个变量既是类的属性也是类实例的属性。 (2)如果变量定义在类的方法下面,如果加了self,那这个变量就是类实例的属性,不是类的属性;如果没有加self,这个变量只是这个方法的局部变量,既不是类的属性也不是类实例的属性。 2.方法(即函数) (1)如果在类中定义函数时加了self,那这个函数是类实例的方法,而不是类的方法。 (2)如果在类中定义函数时候没有加self,那这个函数就只是类的方法,而不是类实例的方法。 3.继承   通俗的讲,子类继承父类,也就是子类继承了父类的属性和方法,相当于把父类的属性和方法的定义直接加到子类里来,这个时候以子类为主。 来源: https://www.cnblogs.com/QFKing/p/11869304.html

python_面向对象——继承

与世无争的帅哥 提交于 2019-12-04 10:21:12
1.继承 class Animal: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): def talk(self): print('子类独有的方法!') # 子类可以使用父类中的方法 p = Person('yhf',23,'女') p.eat()   子类也可以继承父类的属性: class Animal: a_type = '动物' def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): def talk(self): print('独有的方法!') p = Person('yhf',23,'女') # 子类也可以继承父类的属性 print(p.a_type) 2.重构父类中的方法 class Animal: def _

Python 和 JS 有什么相似?

不打扰是莪最后的温柔 提交于 2019-12-04 08:57:16
Python 是一门运用很广泛的语言,自动化脚本、爬虫,甚至在深度学习领域也都有 Python 的身影。作为一名前端开发者,也了解 ES6 中的很多特性借鉴自 Python (比如默认参数、解构赋值、Decorator等),同时本文会对 Python 的一些用法与 JS 进行类比。不管是提升自己的知识广度,还是更好地迎接 AI 时代,Python 都是一门值得学习的语言。 数据类型 在 Python 中,最常用的能够直接处理的数据类型有以下几种: 数字[整数(int)、浮点型(float)、长整型(long)、复数(complex)] 字符串(str) 布尔值(bool) 空值(None) 除此之外,Python 还提供了列表[list]、字典[dict] 等多种数据类型,这在下文中会介绍。 类型转换与类型判断 与 JS 十分类似,python 也能实现不同数据类型间的强制与隐式转换,例子如下: 强制类型转换: int('3')# 3 str(3.14)# '3.14' float('3.14')# 3.14 # 区别于 JS 只有 Number 一种类型,Python 中数字中的不同类型也能相互强制转换 float(3)# 3.0 bool(3)# True bool(0)# False 隐式类型转换: 1+1.0# 2.0 1+False# 1 1.0+True# 2.0 #

python 属性,类方法和静态方法

不打扰是莪最后的温柔 提交于 2019-12-04 07:14:46
一. 属性 属性: 将一个方法, 伪装成一个属性, 在代码的级别上没有本质的提升, 但是让其看起来很合理. @property 属性 @属性名.setter # 设置(修改) @属性名.deleter # 在内部删除二. 类方法 @classmethod # 类方法 类方法: 通过类名调用的方法, 类方法中第一个参数约定俗称cls, python自动将类名(类空间)传给cls. 只能有类名调用(对象调用, 传给cls参数的也是该对象的所属类). 类方法的应用场景: 1. 无需对象参与. 2. 对类中的静态变量进行修改, 用类方法 3. (1)在父类中类方法得到子类的类空间, 为所欲为, (2)继承中, 父类得到子类的类空间子类类名调用父类的类方法, 将我子类的类名传给父类, 这个方法中能得到子类的任何东西, 还能修改三. 静态方法 @staticmethod 静态方法的优点: 1. 代码块, 清晰 2. 复用性1. 属性 # 属性的初识 class Food: def __init__(self,name,apple,banana): self.name = name self.__apple = apple self.__banana = banana @property # 装饰器函数,内置函数, def func(self): return "喜欢吃 %s 和 %s" %

python- 07 再谈抽象(多态、封装和继承)

走远了吗. 提交于 2019-12-04 06:53:33
# 第七章 再谈抽象# 7.1 对象魔法# 多态:可对不同类型的对象执行相同的操作,而这些操作就像“被施了魔法”一样能够正常运行# 封装:对外部隐藏有关对象工作原理的细节# 继承:可基于通用类创建出专用类# 7.1.1 多态(无需知道对象所属的类(对象的类型))# 7.1.2 多态和方法(无需知道对象的构造)# 7.1.3 封装'''o = OpenObject()o.set_name('Sir Lancelot')print(o.get_name())'''# 7.1.4 继承# 7.2 类# 7.2.1 类到底是什么 子类、超类# 7.2.2 创建自定义类class Person: def set_name(self, name): self.name = name def get_name(self): return self.name def greet(self): #print('Hello, world! I\'m {}'.format(self.name)) passfoo = Person()bar = Person()foo.set_name('Luke Skywalker')bar.set_name('Anakin Skywalker')print(foo.greet())print(bar.greet())# 7.2.3 属性函数和方法class Class

python继承的练习

↘锁芯ラ 提交于 2019-12-04 04:09:29
继承的父类是上一篇python类和实例里的类 1、冰淇淋小店 :冰淇淋小店是一种特殊的餐馆。编写一个名为 IceCreamStand 的类,让它继承 Restaurant 类。这两个版本的 Restaurant 类都可以,挑选你更喜欢的那个即可。添加一个名为 flavors 的属性,用于存储一个由各种口味的冰淇淋组成的列表。编写一个显示这些冰淇淋的方法。创建一个 IceCreamStand 实例,并调用这个方法。 from lianxi00 import Restaurant,User class IceCreamStand(Restaurant): def __init__(self,restaurant_name,cuisine_type): super().__init__(restaurant_name,cuisine_type) self.flavors=['apple_wei','banana_wei','xigua_wei'] def showAllWei(self): print("冰琪琳的味道有:"+str(self.flavors)) mycanting = IceCreamStand("冰淇淋","冰棍等") print(mycanting.describe_restaurant()) print(mycanting.showAllWei()) 2、 管理员

多种方法实现 python 线程池

谁都会走 提交于 2019-12-04 03:41:19
多种方法实现 python 线程池 最近在做一个爬虫相关的项目,单线程的整站爬虫,耗时真的不是一般的巨大,运行一次也是心累,,,所以,要想实现整站爬虫,多线程是不可避免的,那么python多线程又应该怎样实现呢?这里主要要几个问题(关于python多线程的GIL问题就不再说了,网上太多了)。 一、 既然多线程可以缩短程序运行时间,那么,是不是线程数量越多越好呢? 显然,并不是,每一个线程的从生成到消亡也是需要时间和资源的,太多的线程会占用过多的系统资源(内存开销,cpu开销),而且生成太多的线程时间也是可观的,很可能会得不偿失,这里给出一个最佳线程数量的计算方式: 最佳线程数的获取: 1、通过用户慢慢递增来进行性能压测,观察QPS(即每秒的响应请求数,也即是最大吞吐能力。),响应时间 2、根据公式计算:服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) * cpu数量 3、单用户压测,查看CPU的消耗,然后直接乘以百分比,再进行压测,一般这个值的附近应该就是最佳线程数量。 二、为什么要使用线程池? 对于任务数量不断增加的程序,每有一个任务就生成一个线程,最终会导致线程数量的失控,例如,整站爬虫,假设初始只有一个链接a,那么,这个时候只启动一个线程,运行之后,得到这个链接对应页面上的b,c,d,,,等等新的链接,作为新任务,这个时候

Python

走远了吗. 提交于 2019-12-04 02:24:07
解释器: 计算机只能识别机器语音,解释器就是讲其他语言C语言、Python等语言翻译成机器语言的工具 解释器分为 编译 和 解释 编译型语言:比如C语言,在自己的环境内编写代码,统一交给编译器,编译器统一对源代码进行翻译,生成可执行文件,由操作系统操作运行交个CPU处理( 统一执行 ) 如果编译器在window平台上,那么生成的可执行文件是能在window运行(不能跨平台) 解释型语言:比如Python,在自己的环境内编写代码,写了三行Python代码,解释器逐一读取源代码,读取一行翻译成机器码由CPU执行,依次进行,读取一行,解释一行,执行一行( 逐一执行 ) 如果源代码要在不同的系统执行,那么只需安装不同的系统的解析器(只写一个源代码就可以) 1.Python是完全面向对象的语言 函数、模块、数字、字符串都是对象,在Python一切皆是对象 完全支持继承、重载、多重继承 支持重载运算符、也支持泛型设计 2.Python拥有一个强大的标准库,Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数;而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理额外的功能 3.Python社区提供了大量的第三方模块,使用方式和和标准库类似,他们的功能覆盖科学计算、人工智能、机器学习、Web开发、数据库接口、图形系统多个领域