python继承

python笔记——调试和异常处理

天涯浪子 提交于 2020-01-31 19:27:45
type()函数 type()函数既可以返回一个对象的类型,又可以创建出新的类型。 type('类名',(继承的父类),dict(方法绑定函数)) 使用type()函数创建的类和直接写class完全一样,因为python解释器遇到class定义时,仅仅是扫描以下class定义的语法,然后调用type()函数创建出class。 metaclass() 当我们定义了类之后,可以根据这个类创建出实例,所以: 先定义metaclass,就可以创建类,最后创建实例。 错误处理 try try...excepy...finally 流程为:try产生错误跳转到except,except执行结束后如果又finally则跳转到finally。 调试 assert def foo(s): n = int(s) assert n != 0, 'n is zero!' return 10 / n def main(): foo('0') assert表示:如果n != 0 得结果为true,则程序继续进行 如果断言失败,assert语句本身就会抛出AssertionError错误,内容为表达式后的'n is zero!' python解释器可以使用-O参数来关闭assert logging import logging logging.basicConfig(level=logging.INFO)

python学习笔记——装饰器

依然范特西╮ 提交于 2020-01-31 18:49:59
@property装饰器 把一个方法变成属性调用 好处是方便调用 class Student(object): @property def score(self): return self._score @score.setter def score(self,value): #此处省略检查是否参数合法 self._score = value 只使用@property而不不对该函数setter方法,表示定义为只读属性 class Screen(object): """docstring for Screen""" @property def width(self): return self._width @width.setter def width(self,value): self._width = value @property def height(self): return self._height @height.setter def height(self,value): self._heigth = value @property def resolution(self): return self._heigth * self._width s = Screen() s.width = 1024 s.height = 768 print('resolution ='

异常捕获的学习

不羁岁月 提交于 2020-01-31 13:33:20
异常处理 捕捉异常可以使用try/except语句。 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。 如果你不想在异常发生时结束你的程序,只需在try里捕获它。 语法: 以下为简单的 try....except...else 的语法: try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生 try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。 实例

Python面向对象编程

折月煮酒 提交于 2020-01-31 11:20:28
Python面向对象编程 类和类的属性、方法 __repr__方法与__str__方法 静态属性 实例方法、类方法与静态方法 类的property属性 类的继承 类的属性为另一个类的实例 类和类的属性、方法 import datetime class Book : def __init__ ( self , title , price = 0.0 , author = '' , pubate = datetime . date . today ( ) ) : # 构造方法,可以给属性赋默认值 self . title = title # self代表类的实例 self . price = price self . author = author self . pubate = pubate def print_info ( self ) : # 类的一般方法 print ( '本书信息如下:' ) print ( '标题:{}' . format ( self . title ) ) print ( '价格:{}' . format ( self . price ) ) print ( '作者:{}' . format ( self . author ) ) print ( '出版日期:{}\n' . format ( self . pubate ) ) book1 = Book

Python基础23类-多态

痞子三分冷 提交于 2020-01-31 10:20:43
1 #多态概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不考虑他们具体的类,通过继承实现多态 2 class H2O: 3 def __init__(self,name,temperature): 4 self.name=name 5 self.temperature=temperature 6 def turn_ice(self): 7 if self.temperature < 0 : 8 print('[%s]温度太地结成冰了'%self.name) 9 elif self.temperature > 0 and self.temperature < 100 : 10 print('[%s]液化成水'%self.name) 11 elif self.temperature >= 100 : 12 print('[%s]温度太高变成水蒸气'%self.name) 13 class Water(H2O): 14 pass 15 class Ice(H2O): 16 pass 17 class Steam(H2O): 18 pass 19 20 w1=Water('水',100) 21 s1=Steam('水蒸气',-10) 22 w1.turn_ice() 23 s1.turn_ice() 来源: https://www.cnblogs.com/josie930813

Python实例浅谈之五Python守护进程和脚本单例运行

匆匆过客 提交于 2020-01-31 06:00:08
一、简介 守护进程最重要的特性是后台运行;它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业规划进程crond启动,还可以由用户终端(通常是shell)执行。 Python 有时需要保证只运行一个脚本实例,以避免数据的冲突。 二、Python守护进程 1、函数实现 [html] view plain copy #!/usr/bin/env python #coding: utf-8 import sys, os '''将当前进程fork为一个守护进程 注意:如果你的守护进程是由inetd启动的,不要这样做!inetd完成了 所有需要做的事情,包括重定向标准文件描述符,需要做的事情只有chdir()和umask()了 ''' def daemonize ( stdin= '/dev/null', stdout= '/dev/null', stderr= '/dev/null'): #重定向标准文件描述符(默认情况下定向到/dev/null) try: pid = os.fork() #父进程(会话组头领进程)退出,这意味着一个非会话组头领进程永远不能重新获得控制终端。 if pid > 0: sys.exit(0)

Python全栈(四)高级编程技巧之2.类与对象深度问题与解决技巧

我怕爱的太早我们不能终老 提交于 2020-01-31 03:47:29
文章目录 一、派生内置不可变类型并修改其实例化行为 二、创建大量实例节省内存 三、Python中的with语句 四、创建可管理的对象属性 五、类支持比较操作 六、环状数据结构中管理内存 一、派生内置不可变类型并修改其实例化行为 引入: 我们想自定义一种新类型的元组,对于传入的可迭代对象,我们只保留其中int类型且值大于0的元素,例如: IntTuple([2,-2,'jr',['x','y'],4]) => (2,4) 如何继承内置tuple 实现IntTuple? 自定义IntTuple: class IntTuple ( tuple ) : def __init__ ( self , iterable ) : for i in iterable : if isinstance ( i , int ) and i > 0 : super ( ) . __init__ ( i ) int_t = IntTuple ( [ 2 , - 2 , 'cl' , [ 'x' , 'y' ] , 4 ] ) print ( int_t ) 打印 Traceback ( most recent call last ) : File "xxx/demo.py" , line 7 , in < module > int_t = IntTuple ( [ 2 , - 2 , 'cl' , [ 'x'

Python环境搭建-1 Python介绍

北战南征 提交于 2020-01-30 18:21:51
Python翻译成汉语是蟒蛇的意思,并且Python的logo也是两条缠绕在一起的蟒蛇的样子,然而Python语言和蟒蛇实际上并没有一毛钱关系。 Python语言是由荷兰程序员Guido van Rossum,江湖人称“龟叔”,独立开发完成初版的。“龟叔”曾供职于google,现任职于dropbox 。1989年圣诞节期间,在阿姆斯特丹,为了打发圣诞节的无趣,决心开发一个新的脚本解释语言,作为ABC语言的一种继承,然后他就这么做了,并实现了(大神的能力)。之所以选中Python作为该编程语言的名字,是因为他是一个叫Monty Python喜剧团体的爱好者,其本意并不是想选条蟒蛇。 Python语言的特点 简单易学、明确优雅、开发速度快 简单易学:与C和Java比,Python的学习成本和难度曲线不是低一点,更适合新手入门,自底向上的技术攀爬路线。先订个小目标爬个小山,然后再往更高的山峰前进。而不像C和JAVA光语言学习本身,对于很多人来说就像珠穆朗玛峰一样高不可攀。 明确优雅:Python的语法非常简洁,代码量少,非常容易编写,代码的测试、重构、维护等都非常容易。一个小小的脚本,用C可能需要1000行,用JAVA可能几百行,但是用Python往往只需要几十行! 开发速度快:当前互联网企业的生命线是什么?产品开发速度!如果你的开发速度不够快,在你的产品推出之前别人家的产品已经上线了

一、python 基础介绍

一世执手 提交于 2020-01-30 09:13:30
 创始人:吉多·范罗苏姆   python是一种面向对象的语言,什么是面向对象?     面向对象可以理解成:调用现有的功能模块,来实现要达到的目的。编写程序代码,就是调用不同的功能模块,直接使用或者组合成需要的功能来实现目的(个人理解)     面向对象的三大特征:     1、封装       隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。     2、继承       提高代码复用性;继承是多态的前提。     3、多态       父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。   1. 解释器:将其它语言翻译成机器可以识别的语言(0,1)     不同类型的解释器,工作方式不同     编译型:编写代码---------- 编译器 将代码统一翻译成机器码,并生成可执行文件------------机器识别,系统中执行可执行文件     解释型:编写代码---------- 解释器 依次读取每行代码翻译成机器码,翻译后交给机器执行,之后再读取一行翻译。。。直到执行完成。   2. 现阶段python主要分为:python2、python3     python2 默认不支持中文,我们主要学习python3   3. CPU--------内存--------硬盘     硬盘,可以长时间保存数据

Python 简单入门指北(二)

六眼飞鱼酱① 提交于 2020-01-30 08:50:22
Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值。总而言之,函数和普通变量并没有什么区别。 函数是一等公民,这是函数式编程的基础,然而 Python 中基本上不会使用 lambda 表达式,因为在 lambda 表达式的中仅能使用单纯的表达式,不能赋值,不能使用 while、try 等语句,因此 lambda 表达式要么难以阅读,要么根本无法写出。这极大的限制了 lambda 表达式的使用场景。 上文说过,函数和普通变量没什么区别,但普通变量并不是函数,因为这些变量无法调用。但如果某个类实现了 __call__ 这个魔术方法,这个类的实例就都可以像函数一样被调用: class Person: def __init__(self): self.name = 'bestswifter' self.age = 22 self.sex = 'm' def __call__(self): print(self) def __str__(self): return 'Name: {user.name}, Age: {user.age}, Sex: {user.sex}'.format(user=self) p = Person() p() # 等价于 print(p)