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

相关文章

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问