Python开发基础总结(四)XML+time+OO

简介: Python开发基础总结(四)XML+time+OO

一、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()来生成实例。

@classmethod
    def 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
    @property
    def num(self):
        return self._num * 10
    @num.setter
    def num(self, v):
        self._num = v
    @num.deleter
    def 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 = 8888
    def 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修饰。可以直接使用。后面如果有需要,在进行修饰。这样既减少了工作,修改时,也不会对原有代码进行改动。


作者:zhulin1028

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章
|
7天前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
|
2月前
|
存储 数据库连接 API
Python环境变量在开发和运行Python应用程序时起着重要的作用
Python环境变量在开发和运行Python应用程序时起着重要的作用
114 15
|
17天前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
28天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
187 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
17天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
232 45
|
1月前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
112 5
|
2月前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
350 3
如何使用Python开发API接口?
|
2月前
|
机器学习/深度学习 人工智能 关系型数据库
Python开发
Python开发
48 7
|
2月前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
26 1