嵌入式 pyhton基本语法三

原创 2013年12月02日 14:41:42

七、面向对象编程

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

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

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

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

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

class Animal:

    pass #empty block

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

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

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

复制代码
class Person:

    Count = 0

    def __init__(self, name, age):

        Person.Count += 1

        self.name = name

        self.__age = age



p = 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 = salary

17         print "Initializing a teacher"

18 

19     def tell(self):

20         SchoolMember.tell(self)

21         print "Salary: %d" % self.salary

22 

23 class Student(SchoolMember):

24     '''Represent a student.'''

25     def __init__(self, name, age, marks):

26         SchoolMember.__init__(self, name, age)

27         self.marks = marks

28         print "Initializing a student"

29 

30     def tell(self):

31         SchoolMember.tell(self)

32         print "Marks: %d" % self.marks

33 

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 teacher

Initializing a school member.

Initializing a student

Name: Mr. Li, Age: 30,  Salary: 9000

Name: 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         break

18     print line,

19 

20 f.close()
复制代码

  2. 存储器

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

复制代码
import cPickle



datafile = "data.data"



namelist = ["peter", "john", "king"]



f = file(datafile, "w")

cPickle.dump(namelist, f)

f.close()



del namelist



f = file(datafile)

storednamelist = cPickle.load(f)



print storednamelist

#['peter', 'john', 'king']
复制代码

九、异常

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

复制代码
try:

    print 1/0

except ZeroDivisionError, e:

    print e

except:

    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 = length

        self.atleast = atleast



try:

    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:

            break

        time.sleep(2)

        print line,

finally:

    f.close()

    print "Cleaning up..."
复制代码

相关文章推荐

嵌入式 H264参数语法文档: SPS、PPS、IDR以及NALU编码规律

H.264码流第一个 NALU 是 SPS(序列参数集Sequence Parameter Set) 对应H264标准文档 7.3.2.1 序列参数集的语法进行解析 SPS参数解析// fil...
  • skdkjxy
  • skdkjxy
  • 2014年09月30日 16:59
  • 1799

嵌入式 数据库增删改查基本语句

adoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i].DataT...
  • skdkjxy
  • skdkjxy
  • 2014年09月08日 18:38
  • 468

Java Web 学习笔记之八:嵌入式web服务器Jetty的基本使用

Jetty 是一个开源的servlet容器,具有易用性,可扩展性,易嵌入性等特点。通过少量的代码,开发者就可以在程序中以嵌入的方式运行一个web服务器。...

嵌入式程序员应知道的16个基本问题

预处理器(Preprocessor)   1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)      #define SECONDS_PER_YEAR (6...
  • whb_mcu
  • whb_mcu
  • 2012年02月28日 11:40
  • 138

基于嵌入式QTE的输入法基本方法

QtE的输入法框架必须提供一个QWSInputMethod类的实例, 所以在输入法中要实现一个QWSInputMethod类的派生类,即子类QWSInputMethod *input; 在此派生类中显...
  • hsl17
  • hsl17
  • 2011年09月12日 00:48
  • 2081

嵌入式汇编的基本格式

本节是第一次在内核源程序中接触到C语言中的嵌入式汇编代码。由于我们在通常的C语言程序的编制过程中一般是不会使用嵌入式汇编程序的,因此这里有必要对其基本格式进行简单的描述,详细的说明可参见GNU gcc...

想成为嵌入式程序员应知道的16个基本问题

[转帖]想成为嵌入式程序员应知道的16个基本问题 分类: C/C++基础2006-04-13 21:25 3348人阅读 评论(2) 收藏 举报   这是嵌入式C程序员的基本知识。...

成为嵌入式程序员应知道的16个基本问题

这是嵌入式C程序员的基本知识。作者在Embedded Systems Programming杂志上发表了很多嵌入式系统开发方面的文章。   C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。...
  • Fun_Jie
  • Fun_Jie
  • 2016年09月05日 19:28
  • 2761

嵌入式实时操作系统的基本概念

1.计算机操作系统概念   应用软件 Microsoft Word 、Photoshop、…、ACDSee 系统软件 编译程序、汇编程序、编辑程序、…、数据库...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 pyhton基本语法三
举报原因:
原因补充:

(最多只允许输入30个字)