Python开发之路(七)

一、封装

什么是封装?

广义上的封装:把变量和函数都放在类中。

狭义上的封装:把一些变量或方法隐藏起来,不对外公开。

对于这种在类中,将变量或方法隐藏起来的,就叫做私有的变量或方法,例如:

class Person:
    __country = '中国'  # 私有的静态属性

print(Person.__country) # 报错信息:AttributeError: type object 'Person' has no attribute '__country'

这样在全局的命名空间中,要想调用__country就调用不来了,那真的就没有办法了吗?不,如:

print(Person._Person__country)

这样就可以调用了。那么我们得出:如果非要在累的外部调用一个私有的名字,那么必须是在私有的名字前面加_类名__私有的名字才行。

再有私有的变量:在类的内部,如果使用__变量的形式,会发生畸形,python会自动为你加上_类名。

所以,封装的特点就是只能在类的内部调用,不能在类的外部使用。


二、类中的装饰器方法

比较常用的就是property,它的作用是讲一个函数伪装成类的一个属性。例如:

from math import pi
class Circle:
    def __init__(self,r):
        self.r = r
    @property
    def area(self):
        return self.r **2 * pi
    @property
    def perimeter(self):
        return self.r * 2 *pi

c= Circle(3)
print(c.area)
print(c.perimeter)


三、序列化

json和pickle

简单地说:序列化是用来保存当前状态的,例如VMware挂起。

                其中json是可跨平台的,例如可跨C、Java,但支持的数据类型有限;

                而pickle是在python中通用的,支持几乎所有python中的数据类型。


四、hashlib模块

哈希的算法经常就分为两大类:sha和md5

哈希算法的特点是,无论你运行输出多少次,一个特定的字符串经过哈希后,得到的一定长度的字符串是不变的,且哈希算法是单向的,不能由结果转换回字符串。

目前,我们在设计程序时,经常会用到与用户交互用户名密码,我们就可以通过哈希算法的方式,将用户的密码转化成密文存放到数据库中,但单单哈希密码可能会利用彩虹表撞库将密码撞出来,所以比较安全的加密方式是加盐或动态加盐。


五、反射

如果你能够用好反射,不仅你会节省你的代码,提高效率,还能够通过巧妙地,反射变量的方式,利用面向对象一行省去几十行代码,用好反射,这意味着你将从一个python小白正在向python程序员进阶。

什么是反射呢?

在Python中,一切以xxx.xxx的形式调用的,都可以利用反射。(面向对象)

反射的两个关键函数:hasattr 和 getattr。


六、logging模块

logging模块是用来显示程序的运行状态的。logging的level如下:

logging.debug('debug message')               # 非常细节的日志 ———— 排查错误的时候使用
logging.info('info message')                       # 正常的日志信息
logging.warning('warning message')         # 警告 小错误 但能正常运转
logging.error('error message')                   # 错误 有错误 可以通过某种方式可以过
logging.critical('critical message')              # 严重错误 只能重启


七、模块及项目规范性

模块包括:内置模块、扩展模块、自定义模块。

内置模块:是python中自有的,例如:os、sys、time等等;

扩展模块:是大家都在用,但需要安装的,例如:prettytable,beautiful soup等等;

自定义模块:是自己写的,要知道一个py文件就是一个模块。


在项目的规范性中,我们约定俗称:在py文件的第一行,引入你这个py文件中所需的模块,顺序如上定义所示。

项目规范性中,我们就不再是一个py文件搞定所有了(小功能的、小脚本不算,只按项目的规范来谈)。

首先我们至少要在项目的根目录下,创建如下几个目录:

1.bin目录:用于存放start.py,用户运行此文件便可以运行整个项目,即项目程序入口;

2.core目录:用于存放核心程序文件,例如main.py,core.py以及你的重要算法一类的文件;

3.conf目录:用于存放配置文件,例如你的项目需要具有可移植性,即使在其他主机上运行该项目也没问题,那么配置可移植的相对路径,就可以放在这个目录的文件下;

4.db目录:用于存放数据文件,例如:用户信息、序列化文件等。但一般的中型以上的项目,就会使用数据库了,那么这条就可以略了。

你可能感兴趣的:(Python开发之路)