一、XML 的使用

  1. 处理xml消息包比较好用的模块是xml.etree.ElementTree。
  2. Element执行xml的根节点。
  3. elem.find(path):查找根节点下面路径为path的子节点。
  4. elem.findall(path):同样的子节点可能有多个,这里会返回一个列表。
  5. elem.findtext(path):获取指定路径子节点的内容,这个我们会经常使用。
  6. elem.get(key);获取属性的值。
  7. 上面如果没用,则返回none
  8. elem.append:添加自节点。
  9. elem.tag:返回tag值,也就是name。
  10. elem.text:返回内容。
  11. elem.attrib:返回属性的字典。
  12. SubElement:生成一个节点,自动添加为父节点的子节点。
  13. tostring:转化为xml文本字符串。但是不包括xml头。如果编码方式为UTF-8或者GB2312,gb2312都会产生xml头;如果是utf-8,则不会产生xml头
  14. fromstring:从字符串转化为ElementTree对象。和XML同样的功能。
  15. elem.set();设置属性值

二、time 的使用

  1. time.sleep()函数函数具有c下sleep函数功能,单位为秒,但是可以接受浮点数。这样可以表示毫秒。
  2. ti = datetime.datetime.now()可以显示当前的时间,包括当前的微秒也可以显示出来。两个的差值可以表示时间 的间隔:microsecondLong = timeLong.seconds * 1000000 + timeLong.microseconds。差值的成员是seconds和microseconds

三、OO 的使用

1、如果不想让成员变量或者方法被外部使用(也就是private特性),可以以__双下划线开通。

2、属性不但可以定义在init中,也可以定义在任意的方法中通过self定义。不过最好在init中定义。

3、Python也可以实现抽象基类,也就是接口:

注意:不可以对私有属性和方法执行@abstractmethod。否则会失败。因为,私有的无法被重写,所以,无法生成被实例化。

4、__str__属性可以将对象转换为字符串,也就是调用print(object)是会打印的字符串。

5、call(魔法方法)可以将对象作为函数来调用。给它一个入参就可以。:

def __call__(self, protoVer):return api.protoModules[protoVer].TimeTicks((time.time()-self.birthday)*100)
复制代码

它的作用:比较常用的是作为回调,因为他可以保存状态信息。它和闭包类似,可能比闭包的可读性要好一点。

6、对象实例是否可以删除?

7、Python参考手册要好好看一下。

8、python的static方法使用的是装饰器语法:@staticmethod.

9、对类的调用还有一个方法:CALSS.method(object)。

10、子类中,如果想调用父类的方法,可以通过:

parent.method(self).

不过还有更好的方法:

super(child, self).foo()//注意:这里是根据子类的类型获取父类的方法。它的好处是不用明显给出基类的类型。

11、cls:类方法的第一个参数。通常表示类的类型,可以通过cls()来生成实例。

  @classmethoddef spawn(cls, *args, **kwargs):"""Return a new :class:`Greenlet` object, scheduled to start.The arguments are passed to :meth:`Greenlet.__init__`."""g = cls(*args, **kwargs)g.start()return g
复制代码

12、继承,如果子类定义了__init__函数,子类的init函数不会默认调用父类的init函数,需要手动调用:parent.init。这一点是和c++有区别的。如果子类没有定义__init__,则子类会调用父类的__init__。这里可以发现,其实,子类如果定义了init函数,是对父类的init的一个覆盖。

13、super 注意:!!!它只能用在新式的类定义中。什么是新式的?原来只是基类定义时继承object!!!。

14、继承如何继承方法:只要继承一个类,就会继承这个类所有的方法,包括__init__,del。但是如果子类重写某方法,就会覆盖父类的方法,不会再调用父类的方法了。如果想调用父类的方法,可以通过super的方式调用。

15、继承如何继承属性:只要不覆盖父类__init__方法,或者调用了父类的__init__方法,就会继承父类__init__属性的方法。继承后也可以更改这些属性。

16、父类如何防止被继承:方法或者属性以__开头,则可以防止被继承。

17、根据我的经验,其实可以以一种本质的方式理解Python的继承:Python的类就是一些方法的集合,继承一个类就是继承这个类的所有的方法。如果在子类中定义一个方法,其实是更改了这个类的符号。而属性,则可以在所有的方法中定义,只要调用了定义属性的方法,调用父类,则是继承父类的属性,调用子类定义属性的方法,则是定义子类的方法。

18、property:

class c(object):def __init__(self):self._num = 1@propertydef num(self):return self._num * 10@num.setterdef num(self, v):self._num = v@num.deleterdef num(self):pass
o = c()
print(o.num)
o.num = 20
print(o.num)
复制代码

19、这样的好处是,可以在操作属性时,不用显示为方法调用,更加可读。同时又可以统一入口。 :注意,它也必须继承 object 才可以。

19、 OO中的垃圾回收:Python的垃圾回收使用的是符号引用计数。那么,如果在一个函数中申请一个对象,然后返回它的一个属性或者方法,这个时候对象的符号引用已经去掉,对象是否会释放?

class child(parent):def __init__(self):self.i = 8888def foo(self):print('-----------------------')def __del__(self):print('now in del child')super(child, self).__del__()
复制代码

第一种情况,返回的是属性

def refun():

    o = child()return o.i
I = refun()
复制代码

这个时候,对象o会马上释放。因为o.i其实就是一个对象的引用,和o没有关系

第二种情况,返回的是方法

def refun():o = child()return o.foo
foo = refun()
复制代码

这个时候,对象o要等到foo释放的时候再释放,因为foo中包含了o的引用(foo的入参self)

20、对于对象的属性,如果属性是可读写的,则第一步没有必要用@property修饰。可以直接使用。后面如果有需要,在进行修饰。这样既减少了工作,修改时,也不会对原有代码进行改动。

Python开发基础总结之XML+time+OO相关推荐

  1. c语言 dict数据类型,Python开发基础之Python常用的数据类型

    Python开发基础之Python常用的数据类型 发布时间:2020-08-02 20:07:19 来源:51CTO 阅读:348 作者:warrent 博文大纲 一.Python介绍 二.Pytho ...

  2. python开发基础戴歆第四章_第一阶段:Python开发基础 day04 课后练习

    第一阶段:Python开发基础 day04 课后作业 1.简述python的五大数据类型的作用.定义方式.使用方法 数字类型 字符串类型 列表 字典 布尔型 答:数字类型分为整型(int)和浮点型(f ...

  3. dockerfile拉取私库镜像_还在用Alpine作为你Docker的Python开发基础镜像?其实Ubuntu更好一点...

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_173 一般情况下,当你想为你的Python开发环境选择一个基础镜像时,大多数人都会选择Alpine,为什么?因为它太小了,仅仅只有 ...

  4. Python开发基础----异常处理、socket套接字基础1

    异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...

  5. Python开发基础总结之模块+日志+自省

    一.模块的使用 1.    如果不想将模块的某些函数和变量被别的模块使用,可以以单下划线开头.这样import 是没有的,但是使用import mode,然后mode.fun仍然可以调用.在class ...

  6. python开发基础教程

    第一:python基础 第二:python异常处理类 第三:python装饰器  python常用的装饰器 第四:python发送邮件 转载于:https://www.cnblogs.com/feng ...

  7. Python开发基础--- 进程间通信、进程池、协程

    进程间通信 进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的. 进程队列queue 不同于线程queue,进程 ...

  8. python开发基础作业02:三级菜单,使用字典dic及列表

    作业要求及提示:三级菜单 ''' 1.三级菜单 2.可依次进入各子菜单 3.菜单能够回到上一级 4.用到知识点:字典.列表.多层循环.函数 条件:基本  if  else 嵌套  if...if... ...

  9. python开发基础04-函数、递归、匿名函数、高阶函数、装饰器

    匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1):return x+y+z匿名 lambda x,y,z=1:x+y+z #与函数有 ...

最新文章

  1. Tungsten Fabric SDN — Service Chain — 高级特性
  2. 浅析网站内链优化如何营造良好的内链生态环境?
  3. 学习《Flask Web开发:基于Python的Web应用开发实战》分享
  4. 在ASP.NET中实现Url Rewriting
  5. 【数据结构-栈和队列】详解栈和队列(代码+STL+原理)
  6. python基础之if、while、for语句
  7. VirtualAlloc和VirtualCopy----VirtualFree
  8. 一个在自己的线程中运行测试的JUnit规则
  9. 登录微信用android设备,Android 之微信登录
  10. 如何使用Spring优雅地处理REST异常
  11. 如何将类添加到给定的元素?
  12. 力扣——实现 strStr()
  13. [2018.07.31 T3] 第三题
  14. django模板语言使用
  15. c++ 获取文件夹文件并排序
  16. 思科3650交换机的密码恢复
  17. 百度地图API 浏览器端调用 傻瓜教程
  18. 从零开始变成一个脚本小子001-初窥密码
  19. 小米5 MIUI 10系统完全Root教程 (Root思想通用所有机型)
  20. 逍遥游 一致性和哥德尔两大定理—— 读哥德尔之八

热门文章

  1. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、为不同的变量显示不同的统计信息
  2. pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe )
  3. Pandas判断dataframe是否为空
  4. python实现Shapiro-Wilk正态分布检验
  5. sklearn使用FeatureHasher处理字符串特征: AttributeError: ‘str‘ object has no attribute ‘items‘
  6. R探索新数据分析(Exploratory Data Analysis,EDA)
  7. 惠普计算机电源怎么设置充电,惠普电脑怎么用外接电源时不用电池怎样设置的...
  8. c语言中将数组设为空,求助~~ 如何把数组变成动态输入的?
  9. getconnectiontimeoutexception 网络问题排查_通俗解析居家宽带网络问题:光猫设备排查教程篇...
  10. 基因组组装的那些困扰,用单倍体基因组一一破解!