day6-面向对象的编程

第六次课程了。力不从心啊。。

一、模块回顾

1. os模块

2. sys模块

3. shutil模块

高级的 文件、文件夹、压缩包 处理模块

shutil.copyfileobj(fsrc, fdst[, length])

功能:将文件内容拷贝到另一个文件中,可以部分内容

shutil.copyfile(src, dst)

功能:仅拷贝文件

shutil.copymode(src, dst)

功能:仅拷贝权限,内容、组、用户均不变

shutil.copystat(src, dst)

功能:拷贝状态的信息,包括:mode bits, atime, mtime, flags

shutil.copy(src, dst)

功能:拷贝文件和权限

shutil.copy2(src, dst)

功能:拷贝文件和状态信息

1. zipfile

2. tarfile

4. shelve模块

二次封装pickle模块功能,对比pickle而言,shelve实现了按照‘键’来取值

示例:

import shelve

name = [‘swht‘,‘shen‘,‘test‘]
class Test(object):
    def __init__(self,n):
        self.n = n
t1 = Test(1234)
t2 = Test(123456)

#存数据shelve_file = shelve.open(‘ret.txt‘)
shelve_file[‘use‘] = name
shelve_file[‘t1‘] = t1
shelve_file[‘t2‘] = t2
shelve_file.close()

#取数据
shelve_load = shelve.open(‘ret.txt‘)
a = shelve_load.get(‘use‘)
print(a)
b = shelve_load.get(‘t1‘)
print(b.n)
c = shelve_load.get(‘t2‘)
print(c.n)
shelve_load.close()

5.configparser模块

示例:

import configparser

#生成文档
#["DEFAULT"]是一个全局模块,对所有的模块生效

config = configparser.ConfigParser()
config["DEFAULT"] = {‘ServerAliveInterval‘: ‘45‘,
                      ‘Compression‘: ‘yes‘,
                     ‘CompressionLevel‘: ‘9‘}

config[‘bitbucket.org‘] = {}
config[‘bitbucket.org‘][‘User‘] = ‘hg‘
config[‘topsecret.server.com‘] = {}
topsecret = config[‘topsecret.server.com‘]
topsecret[‘Host Port‘] = ‘50022‘     # mutates the parser
topsecret[‘ForwardX11‘] = ‘no‘  # same here
config[‘DEFAULT‘][‘ForwardX11‘] = ‘yes‘
with open(‘example.ini‘, ‘w‘) as configfile:
   config.write(configfile)

#查询

config = configparser.ConfigParser()
config.read(‘example.ini‘)
print(config.sections())  #[‘bitbucket.org‘, ‘topsecret.server.com‘]
if ‘bitbucket.org‘ in config:
    print(‘True‘)
print("[‘bitbucket.org‘][‘User‘]:",config[‘bitbucket.org‘][‘User‘])
print("[‘bitbucket.org‘][‘Compression‘]:",config[‘bitbucket.org‘][‘Compression‘])
for key in config[‘bitbucket.org‘]:
    print(key)

#读

config = configparser.ConfigParser()
config.read(‘example.ini‘)
secs = config.sections()
print(secs) #[‘bitbucket.org‘, ‘topsecret.server.com‘]

options = config.options(‘topsecret.server.com‘)
print(options) #[‘host port‘, ‘forwardx11‘, ‘compression‘, ‘serveraliveinterval‘, ‘compressionlevel‘]

item_list = config.items(‘bitbucket.org‘)
print(item_list) #[(‘compression‘, ‘yes‘), (‘serveraliveinterval‘, ‘45‘), (‘compressionlevel‘, ‘9‘), (‘forwardx11‘, ‘yes‘), (‘user‘, ‘hg‘)]

val = config.get(‘bitbucket.org‘,‘compression‘)
print(val)

#改写
config = configparser.ConfigParser()
config.read(‘example.ini‘)

#实现从原来的文件中读取,删除[bitbucket.org]模块后将其他内容写到example_new.ini文件中
# sec = config.remove_section(‘bitbucket.org‘)
# config.write(open(‘example_new.ini‘, "w"))

#添加[swht]模块
# sec = config.has_section(‘swht‘)
# sec = config.add_section(‘swht‘)
# config.write(open(‘example_new1.ini‘, "w"))

6. hashlib模块

该模块提供了多个算法对字符串进行加密操作。

示例代码:

import hashlib

#md5加密
md5num = hashlib.md5()
md5num.update(b"[email protected]")
print(md5num.hexdigest()) #7e023c9fafc96423da854e4923f466a1

#sha1加密
sha1num = hashlib.sha1()
sha1num.update(b"[email protected]")
print(sha1num.hexdigest()) #dd8d5deaa16c2dde03785aac99943f8f75bfaba9

#sha256加密
hash = hashlib.sha256()
hash.update(b"[email protected]")
print(hash.hexdigest()) #14b03e2271da2cc9b0cc3ff73727c6d3ba6ba17077470a92162f7b46c9d1d968

#sha384加密
hash = hashlib.sha384()
hash.update(b"[email protected]")
print(hash.hexdigest()) #a27bbc0d66d6b8b00a7ebfcad662ebed385fe2098898dfe23b88ffa88e1b6565d82e7eee5c9950c90231d0c0aa286e00

#sha512加密
hash = hashlib.sha512()
hash.update(b"[email protected]")
print(hash.hexdigest()) #42bb1886bba49373c8f8177fba32a58a1f31af7272219789db52776428789f4a39970da9a36fdef6ab76651ed9f07e0fa140e4fa7dd325cb52559389bb80ceab

高级加密代码


7. subprocess模块

1. python2.7

    import subprocess
    #默认状态shell = False,必须使用一个列表的方式将shell命令传递进去
    ret = subprocess.call(["ls", "-l"], shell=False)
    #使用shell = True告诉subprocess模块对用户传入的shell命令不转义,即使用原生shell命令
    ret = subprocess.call("ls -l", shell=True)

2. python3.5

8. logging模块

示例:

import logging

# logging.warning("user [swht] is start the systerm!")
# logging.critical("server is down!")
#创建日志
logger = logging.getLogger(‘[Test-Log]‘)
logger.setLevel(logging.DEBUG)

#创建一个控制台的handler并设置日志级别
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

#创建一个文件的handler并设置日志级别
fh = logging.FileHandler("access.log")
fh.setLevel(logging.WARNING)
#创建日期格式

fomatter = logging.Formatter(‘%(asctime)s %(name)s %(levelname)s %(message)s‘,datefmt=‘%Y-%m-%d %H:%M:%S‘)

#add formatter to ch and fh
ch.setFormatter(fomatter)
fh.setFormatter(fomatter)

logger.addHandler(ch)
logger.addHandler(fh)

# ‘application‘ code
logger.debug(‘debug message‘)
logger.info(‘info message‘)
logger.warn(‘warn message‘)
logger.error(‘error message‘)
logger.critical(‘critical message‘)

#输出格式:
2016-02-20 16:53:27 [Test-Log] DEBUG debug message
2016-02-20 16:53:27 [Test-Log] INFO info message
2016-02-20 16:53:27 [Test-Log] WARNING warn message
2016-02-20 16:53:27 [Test-Log] ERROR error message
2016-02-20 16:53:27 [Test-Log] CRITICAL critical message

二、面向对象编程

1. 面向对象的介绍

1.  不要写重复的代码
2.  代码易扩展,程序遵循易读、易改的原则

2. 面向对象的特性

1.  封装
2.  继承
    1.  基类或父类或超类
    2.  子类或派生类
    一般情况下,一个子类只能有一个基类,但在python中,一个子类是可以继承多个基类,实现多重继承,可以通过多级继承来实现;继承的过程就是从一般到特殊的过程
3.  多态
    实现接口的重用

3. 类、方法

类 class

示例:

class Role(object):
    def __init__(self,name,role,weapon,life_value):
        self.name = name
        self.role = role
        self.weapon = weapon
        self.life_value = life_value
    def buy_weapon(self,weapon):
        self.weapon = weapon
        print("%s 成功购买[%s]" % (self.name,weapon))

#实例化
p1 = Role(‘swht‘,‘p‘,‘A11‘,100)
t1 = Role(‘shen‘,‘t‘,‘A11‘,100)

print("p1[weapon]初始值:",p1.weapon)
print("t1[weapon]初始值:",t1.weapon)

#买枪行为
p1.buy_weapon("AB")
t1.buy_weapon("AK")

print("p1[weapon]当前值:",p1.weapon)
print("t1[weapon]当前值:",t1.weapon)
时间: 2024-10-11 21:49:59

day6-面向对象的编程的相关文章

如何培养面向对象的编程思想(转)

1.什么是面向对象? 面向对象是专指在程序设计中采用封装,继承,多态和抽象的设计方法.面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分.这些程序设计语言可分为以下几类:系统中一切事物皆为对象:对象是属性及其操作的封装体:对象可按其性质分类,对象成为类的实例:实例关系和继承关系是对象之间的静态关系:消息传递是对象之间动态联系的唯一方式,也是计算的唯一形式:方法是消息的序列. 2.如何理解面向对象? 从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内

Python3 面向对象 高级编程

正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试给实例绑定一个属性: >>> s = Student() >>> s.name = 'Michael' # 动态给实例绑定一个属性 还可以尝试给实例绑定一个方法: >>> def set_age(self, age): # 定义一个函数作为实例方法 ...

Python 2.7 学习笔记 面向对象的编程

python是一种面向对象的语言.本文介绍如何用python进行面向对象的编程. 首先我们说下对象和类,类是一种类型的定义,对象是类的实例. 一.内置对象类型(内置类) 其实我们前面已经大量用到了对象,如字符串.列表.字典等,这些对象的类型是python的内建对象类型. 比如: a=[] 这其实就是创建了一个空的列表对象,并将它赋值给变量a,变量a就指向了一个列表对象. 那列表对象对应的类是什么呢?其实列表对象对应的类名是list. 我们还可以通过类来创建对象,看下例子: >>> pri

C++面向对象的编程思想机器人

C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> class Robot { public: Robot() :Battery(100){}//构造一个机器人的时候让机器人的电量值为满格 void speak();//发言函数 void charge();//充电函数 void function(int i);//选择功能函数 private: unsigned

【PHP面向对象(OOP)编程入门教程】2.什么是类,什么是对象,类和对象之间的关系

类的概念:类是具有相同属性和服务的一组对象的集合.它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分.在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分. 对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位.一个对象由一组属性和对这组属性进行操作的一组服务组成.从更抽象 的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用:它是一组属性和有权对这

&#8203;Python中面向对象的编程

Python面向对象的编程 1概述 (1)面向对象编程 面向对象的编程是利用"类"和"对象"来创建各种模型来实现对真实世界的描述,使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率,另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容. (2)面向对象的特征 1)类(Class):一个类即是对一类拥有相同属性的对象的抽象.蓝图.原型.在类中定义了这些对象的都具备的属性(variables

PHP面向对象(OOP)编程完全教程

转自:http://blog.snsgou.com/post-41.html 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和规划好Web开发构架都是非常有意义的.下面我们就通过实例来说明使用PHP的OOP进行编程的实际意义和应用方法. 我们通常在做一个有数据库后台的网站的时候,都会考虑到程序需要适用于不同的应用环境.和其他编程语言有所不同的是,在PHP中,操作数据库的是一系列的具体功能函数(如

Java面向对象的编程

类的多态性: Java语言中含有方法重载与成员覆盖两种形式的多态:(区别于c++) 方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同. 成员覆盖:子类与父类允许具有相同的变量名称,但数据类型不同,允许具有相同的方法名称,但完成的功能不同. 类:class 对象:object   实例:Instance 创建属于某类的对象,需要通过下面两个步骤来实现: 1.  声明指向"由类所创建的对象"的变量 2.  利用new创建新的对象,并指派给先前所创建的变量

C++面向对象高级编程(九)Reference与重载operator new和operator delete

摘要: 技术在于交流.沟通,转载请注明出处并保持作品的完整性. 一 Reference 引用:之前提及过,他的主要作用就是取别名,与指针很相似,实现也是基于指针. 1.引用必须有初值,且不能引用nullptr 2.引用之后不能再引用别人 3.引用通常不用于声明变量,多用于参数类型,和返回值类型 见下面代码 int main(int argc, const char * argv[]) { int x=0; //p is a pointer to x int* p = &x; // r is a

Matlab 为什么要使用面向对象的编程——开篇

基本上,Matlab的入门资料都会涉及到Matlab编程,但一般的书只涉及到面向过程的编程,忽视了面向对象的编程.实际上,Matlab很早就支持面向对象的编程,我们平时在利用图像对象.坐标系对象.图像对象都或多或少的使用了一些面向对象的性质. 本系列博文是本人在学习利用Matlab进行面向对象编程时自己的理解,主要的资料就是Matlab的帮助文档.因为本人对面向对象的编程只知皮毛,一些理解上的错误在所难免,欢迎指正,互相学习. 类是面向对象的编程中重要的一个概念,类就是描述具有共同特征对象的抽象