嵌入式 pyhton基本语法三

2024-01-05 13:48
文章标签 语法 基本 嵌入式 pyhton

本文主要是介绍嵌入式 pyhton基本语法三,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

七、面向对象编程

  python支持面向对象编程;类和对象是面向对象编程的两个主要方面,类创建一个新的类型,对象是这个类的实例。

  对象可以使用普通的属于对象的变量存储数据,属于对象或类的变量被称为;对象也可以使用属于类的函数,这样的函数称为类的方法;域和方法可以合称为类的属性。

  域有两种类型--属于实例的或属于类本身;它们分别被称为实例变量和类变量。

  类使用关键字class创建,类的域和方法被列在一个缩进块中。

  类的方法必须有一个额外的第一个参数,但是在调用时不为这个参数赋值,这个特殊变量指对象本身,按照惯例它的名称是self,类似C#中的this。

class Animal:pass #empty block

  __init__方法  在类的一个对象被创建时调用该方法;相当于c++中的构造函数。

  __del__方法  在类的对象被销毁时调用该方法;相当于c++中的析构函数。在使用del删除一个对象时也就调用__del__方法。

  Python中所有的类成员(包括数据成员)都是public的;只有一个例外,如果使用的数据成员以双下划线为前缀,则为私有变量。

复制代码
class Person:Count = 0def __init__(self, name, age):Person.Count += 1self.name = nameself.__age = agep = Person("peter", 25)p1 = Person("john", 20)print Person.Count #2
print p.name #peter
print p.__age #AttributeError: Person instance has no attribute '__age'
复制代码

  继承:为了使用继承,基类的名称作为一个元组跟在类名称的后面;python支持多重继承。下面是一个关于继承的例子:

复制代码
 1 class SchoolMember: 2     '''Represent any school member.''' 3     def __init__(self, name, age): 4         self.name = name 5         self.age = age 6         print "Initializing a school member." 7      8     def tell(self): 9         '''Tell my details'''10         print "Name: %s, Age: %s, " % (self.name, self.age),11 12 class Teacher(SchoolMember):13     '''Represent a teacher.'''14     def __init__(self, name, age, salary):15         SchoolMember.__init__(self, name, age)16         self.salary = salary17         print "Initializing a teacher"18 19     def tell(self):20         SchoolMember.tell(self)21         print "Salary: %d" % self.salary22 23 class Student(SchoolMember):24     '''Represent a student.'''25     def __init__(self, name, age, marks):26         SchoolMember.__init__(self, name, age)27         self.marks = marks28         print "Initializing a student"29 30     def tell(self):31         SchoolMember.tell(self)32         print "Marks: %d" % self.marks33 34 print SchoolMember.__doc__35 print Teacher.__doc__36 print Student.__doc__37 38 t = Teacher("Mr. Li", 30, 9000)39 s = Student("Peter", 25, 90)40 41 members = [t, s]42 43 for m in members:44     m.tell()
复制代码

  程序输出如下:

复制代码
Represent any school member.Represent a teacher.Represent a student.Initializing a school member.Initializing a teacherInitializing a school member.Initializing a studentName: Mr. Li, Age: 30,  Salary: 9000Name: Peter, Age: 25,  Marks: 90
复制代码

八、输入/输出

  程序与用户的交互需要使用输入/输出,主要包括控制台和文件;对于控制台可以使用raw_input和print,也可使用str类。raw_input(xxx)输入xxx然后读取用户的输入并返回。

  1. 文件输入/输出

    可以使用file类打开一个文件,使用file的read、readline和write来恰当的读写文件。对文件读写能力取决于打开文件时使用的模式,常用模式

  有读模式("r")、写模式("w")、追加模式("a"),文件操作之后需要调用close方法来关闭文件。

复制代码
 1 test = '''\
 2 This is a program about file I/O.
 3 
 4 Author: Peter Zhange
 5 Date: 2011/12/25
 6 ''' 7  8 f = file("test.txt", "w") # open for writing, the file will be created if the file doesn't exist
 9 f.write(test) # write text to file
10 f.close() # close the file
11 12 f = file("test.txt") # if no mode is specified, the default mode is readonly.
13 14 while True:15     line = f.readline()16     if len(line) == 0:  # zero length indicates the EOF of the file
17         break18     print line,19 20 f.close()
复制代码

  2. 存储器

    python提供一个标准的模块,成为pickle,使用它可以在一个文件中存储任何python对象,之后可以完整的取出来,这被称为持久地存储对象;还有另外一个模块成为cPickle,它的功能和pickle完全一样,只不过它是用c写的,要比pickle速度快(大约快1000倍)。

复制代码
import cPickledatafile = "data.data"namelist = ["peter", "john", "king"]f = file(datafile, "w")cPickle.dump(namelist, f)f.close()del namelistf = file(datafile)storednamelist = cPickle.load(f)print storednamelist#['peter', 'john', 'king']
复制代码

九、异常

  当程序中出现某些异常的状况时,异常就发生了。python中可以使用try ... except 处理。

复制代码
try:print 1/0except ZeroDivisionError, e:print eexcept:print "error or exception occurred."#integer division or modulo by zero
复制代码

  可以让try ... except 关联上一个else,当没有异常时则执行else。

  我们可以定义自己的异常类,需要继承Error或Exception。

复制代码
class ShortInputException(Exception):'''A user-defined exception class'''def __init__(self, length, atleast):Exception.__init__(self)self.length = lengthself.atleast = atleasttry:s = raw_input("enter someting-->")if len(s) < 3:raise ShortInputException(len(s), 3)except EOFError:print "why you input an EOF?"except ShortInputException, ex:print "The lenght of input is %d, was expecting at the least %d" % (ex.length, ex.atleast)else:print "no exception"#The lenght of input is 1, was expecting at the least 3
复制代码

  try...finally

复制代码
try:f = file("test.txt")while True:line = f.readline()if len(line) == 0:breaktime.sleep(2)print line,finally:f.close()print "Cleaning up..."
复制代码

这篇关于嵌入式 pyhton基本语法三的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/573067

相关文章

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

C++语法知识点合集:11.模板

文章目录 一、非类型模板参数1.非类型模板参数的基本形式2.指针作为非类型模板参数3.引用作为非类型模板参数4.非类型模板参数的限制和陷阱:5.几个问题 二、模板的特化1.概念2.函数模板特化3.类模板特化(1)全特化(2)偏特化(3)类模板特化应用示例 三、模板分离编译1.概念2.模板的分离编译 模版总结 一、非类型模板参数 模板参数分类类型形参与非类型形参 非类型模板