python继承

python定制类(以Fib类为例)

▼魔方 西西 提交于 2020-02-28 11:35:47
class Fib(object): def __init__(self): self.a, self.b = 0, 1 def __iter__(self): return self def __next__(self): #如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个__iter__()方法,该方法返回一个迭代对象, # 然后,Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。 self.a, self.b = self.b, self.a+self.b if self.a > 100000: raise StopIteration() return self.a #要表现得像list那样按照下标取出元素,需要实现__getitem__()方法: #__getitem__()传入的参数可能是一个int,也可能是一个切片对象slice,所以要做判断 #也没有对负数作处理,所以,要正确实现一个__getitem__()还是有很多工作要做的。 #如果把对象看成dict,__getitem__()的参数也可能是一个可以作key的object,例如str。 #与之对应的是__setitem__()方法,把对象视作list或dict来对集合赋值。最后

python 面向对象

二次信任 提交于 2020-02-28 10:22:52
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。主要应用在一旦完成很少修改的地方,如linux内核、git、apache服务器等 优点:极大的降低了程序的设计复杂度 缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身 面向对象编程: 不是编程的全部,只是用来解决软件可扩展性的 核心是对象(上帝式思维),对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向对象就是把计算机程序作为一个对象集合,每隔对象都能接收其他对象传来的消息,计算机程序的执行就是就是一系列消息在各个对象之间传递。主要应用在需求经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等 优点:解决了程序的可扩展性差的问题,对某一个对象修改会立刻反映到整个程序体系,如lol对一个英雄属性的修改(万年削弱从未被加强) 缺点:可控性差,无法预测程序执行结果,如lol每局游戏的结果 类和对象 对象的概念 对象也叫做实例,是通过类产生的,对象就是数据属性和方法属性的结合体,比如lol中的英雄,一个英雄就是一个对象,具备生命值、蓝条攻击力等数据属性,又具备qwer四个技能属于方法属性。 类的概念 类包含了一组对象的相同属性部分,还是说lol中的英雄,所有的英雄都有名字、标签

Python开发基础-Day18继承派生、组合、接口和抽象类

痴心易碎 提交于 2020-02-28 10:22:34
类的继承与派生 经典类和新式类 在python3中,所有类默认继承object,但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类) 没有继承object类的子类成为经典类(在python2中,没有继承object的类,以及它的子类,都是经典类) 1 class People: 2 pass 3 class Animal: 4 pass 5 class Student(People,Animal): #People、Animal称为基类或父类,Student为子类,Student继承了People和Animal的所有属性 6 pass 7 print(Student.__bases__) #__bases__方法,查看继承的类的元组 8 print(People.__bases__) 9 print(Animal.__bases__) 输出结果: 1 (<class '__main__.People'>, <class '__main__.Animal'>) #继承了两个父类 2 (<class 'object'>,) #默认继承了object类 3 (<class 'object'>,) 继承 继承是为了减少代码重用的问题,以减少代码冗余。 继承是一种是什么是什么的关系,例如老师类是人类,而非老师类是生日类 继承类示例: 1

Python:图形化GUI-pyQt5入门

那年仲夏 提交于 2020-02-27 19:05:40
创建第一个GUI界面 首先,我们使用pyqt5的窗口小部件创建一个最基本的GUI: # coding:utf-8 import sys from PyQt5.QtWidgets import * app = QApplication(sys.argv) #应用程序对象 win = QWidget() #窗口控件对象 win.show() sys.exit(app.exec_()) #事件循环发生在应用程序中 在上面的程序中,我们首先引用了需要的模块:sys和pyqt5的QtWidgets模块: sys模块提供了访问由解释器使用或维护的变量和与解释器进行交互的函数; QtWidgets模块包含提供一组UI元素以创建经典桌面式用户界面的方法,可以让我们很方便地创建窗口对象。 接着,我们实例化了一个应用程序对象QApplication(),在PyQt5中,每个应用程序都必须实例化一个QApplication(): 然后我们创建了一个QWidget()对象,它是pyqt5中所有的图形用户界面的基类: 再是使用QWidget对象的show()方法将创建的窗口显示出来: 最后,我们调用应用程序对象的exec_()方法来运行程序的主循环,并使用sys.exit()方法确保程序能够完美的退出。 设置窗口标题、大小和位置 # coding:utf-8 import sys from PyQt5

Python小技巧:使用一行命令把你的电脑变成服务器

北城余情 提交于 2020-02-27 18:17:21
不知道你有没有遇到这么一种情况,就是你有时候想要把电脑上的一些东西传输到你的手机或者 Pad ,你要么需要使用数据线连接到电脑,有时候还要装各种驱动才可以进行数据传输,要么需要借助第三方的工具,在局域网上传输,还有就是使用微信的文件传输助手... 不过这些操作都有些局限,比如各种驱动安装不上,第三方的工具突然傻逼,又或者突然断网,这就 wtf 了。 注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃。为此小编建了个Python全栈免费答疑交流.裙 :七衣衣九起起巴而五(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步! 不过,咱这不有 Python 嘛,今天小编来跟你分享一个技巧,使用一个命令就可以把你的电脑变成服务器,这样你的手机就可以直接获取你电脑的文件了。 这个命令就是: python3 -m http.server 当你执行完这个命令的时候,你的电脑会监听 8000 端口,只要访问这个端口(手机和电脑需要在同一局域网下),你的手机就可以获取到你这个电脑的所有文件: 如果你想使用手机或者其它设备来访问你的电脑文件,可以先看看你这台电脑的 IP 地址: 然后在手机上使用 “IP : 端口” 就可以访问了: 访问电脑里的图片: 随便选一张: 也可以直接查看电脑里的 PDF 文件: 当然

python世界与其他语言种类

ε祈祈猫儿з 提交于 2020-02-27 05:35:33
python的历史 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。 python的特点 Python是一种面相对象、函数式、动态类型、解释型的计算机程序语言。目前在 Web 开发、爬虫、安全研究、云计算、数据科学、人工智能等领域得到广泛应用,其设计哲学是“优雅”,“明确”,“简单”。 python的版本与种类 版本: 2.x版本 很多人贡献代码,代码较为混乱,重复代码多 2.4引入了Django框架 3.x版本 代码统一,标准化,摒弃一些api,引入了很有较友好api 在2.6版本的同时引入了3.0版本种类: cPython:先转化为c语言可融合的字节码,然后在解释为二进制,最后加载内存由cpu处理 jPython:先转化为java语言可融合的字节码,然后在解释为二进制,最后加载内存由cpu处理 ironPython:同理 pypy:类似编译型,一次全部转化为py字节码,然后在解释为二进制,最后加载内存由cpu处理 python的运用方向 1。web开发,后端开发,有很多框架支持Django/Tornado/Flask2。云计算

Python面向对象之魔术方法

醉酒当歌 提交于 2020-02-27 04:40:00
__str__ 改变对象的字符串显示。可以理解为使用print函数打印一个对象时,会自动调用对象的__str__方法 class Student: def __init__(self, name, age): self.name = name self.age = age # 定义对象的字符串表示 def __str__(self): return self.name s1 = Student('张三', 24) print(s1) # 会调用s1的__str__方法 __repr__ 在python解释器环境下,会默认显示对象的repr表示。 >>> class Student: ... def __init__(self, name, age): ... self.name = name ... self.age = age ... def __repr__(self): ... return self.name ... >>> s1 = Student('张三', 24) >>> s1 张三 总结: str函数或者print函数调用的是obj.__str__() repr函数或者交互式解释器调用的是obj.__repr__() 注意: 如果__str__没有被定义,那么就会使用__repr__来代替输出。 __str__和__repr__方法的返回值都必须是字符串。 _

python(内置函数)

偶尔善良 提交于 2020-02-27 01:51:09
参考文章 检测本文件中对象是否存在 # -*- coding: utf-8 -*- import sys x=10 obj1=sys.modules[__name__] print(hasattr(obj1,"x")) obj2=sys.modules[__name__] print(hasattr(obj2,"y")) 基于反射动态导入模块 isinstance检查对象是否是类产生的对象 # -*- coding: utf-8 -*- class Foo(object): pass obj = Foo() isinstance(obj, Foo) issubclass(class1,class2)检查class1是否是class2产生的派生类 # -*- coding: utf-8 -*- class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) __getattribute__    当__getattribute__与__getattr__同时存在,只会执行__getattrbute__,除非__getattribute__在执行过程中抛出异常AttributeError二者同时出现 # -*- coding: utf-8 -*- __author__ = 'Linhaifeng'

学习笔记——python(继承)

主宰稳场 提交于 2020-02-27 01:30:12
学习笔记(Python继承) 有几种叫法(父类-子类、基类-派生类) 先拿代码演示一下: 1 class father: 2 def work(self): 3 print("work>>>>>") 4 5 def car(self): 6 print("car>>>>>>>>>") 7 8 class son(father): #想要继承就得添加父类 9 def study(self): 10 print("study>>>>>>>>>>") 11 12 obj = son() 13 obj.work() #在上面方法中,work中的self是形参,此时指向的是obj 14 #除此之外还很重要的是,self永远指向调用方法的调用者(比如这里指向obj) 15 #work>>>>> 由上述代码可以看出此时obj是调用子类的对象,但是却可以使用父类的方法,其主要原因是子类后添加了父类,如果没有加父类,则调用不了父类的方法从而报错,这种形式叫做继承 (self 永远指向调用方法的调用者) 1、当继承父类的方法时,如果不想调用父类的某些方法,则就需要自己在子类中重写 (下面类中重写父类中的work方法,先别去想太多限制) 1 class son(father): 2 def study(self): 3 print("study>>>>>>>>>>") 4 5 def work(self

常见python面试题

梦想的初衷 提交于 2020-02-26 18:54:03
1,简述列举了解的编程语言及语言间的区别? Python 解释型语言,代码简洁,易懂 C语言 编译型语言,底层语言 c++ 编译型语言,在C语言基础上加了面向对象 Java 混合型语言,可拓展性高 Golang 编译型语言,强类型,代码规范,高并发 语言特点: 灵活简洁,语言优美 可读性强, 语言类型: 解释型:逐行转化,运行效率低,性能差,开发效率高。兼容性好,跨平台 编译型 :一次性编译成二进制文件,执行效率高,兼容性差, 动态语言:不用声明变量的数据类型(脚本类语言) 静态语言:需要声明变量的数据类型 第三方库:python定位是任其发展,开源库很多,应用领域广 2,列举Python2和Python3的区别? python2只更新支持到2020年 print:2不加括号,3加括号 input:2中用户输入解析为int类型,raw_input为字符串类型,3直接是字符串类型 range:2是列表,xrange是可迭代对象;3是可迭代对象 继承关系:2是新式类+经典类;3是新式类 数字表示:2,int和long(长整形,超出2**63-1,数字末尾有一个L);3所有整型都是int 3,看代码写结果: v1 = 1 or 2 # v1 = 1 v2 = 3 and 3 or 9 and 0 # v2 = 7 4,以下的值有什么不同? v1 = [1,2,3] v2 = [(1),