嵌入式 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

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

基本知识点

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 与硬件设备的交互,包括输入输出设