Python高级教程学习笔记

一、面向对象
1、面向对象技术简介
类、类变量、数据成员、方法重载、实例变量、局部变量、继承、实例化、方法、对象
2、使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:
class ClassName:
‘类的帮助信息’ #类文档字符串
class_suite #类体

3、类的帮助信息可以通过ClassName.__doc__查看。
class_suite 由类成员,方法,数据属性组成。

4、访问权限:
fun():这种是系统定义的方法;
_fun():这种方法是受保护的,只能是类本身或者其子类通过实例进行访问
__fun():类本身不能通过实例名进行访问,如果想进行访问的话我们只能通过:实例名._类名__XXX()

5、类的构造方法
init(self,param):这个函数相当于类java中的构造方法,它的self是默认的参数,是必填项,但是在调用的时候我们可以不需用填写,另外一个是构造方法的参数列表

6、创建实例对象
emp1 = Employee(“Zara”, 2000)

7、访问属性:可以使用点号来访问属性
emp1.displayEmployee() # 访问该对象的该方法
emp1.age = 7 # 添加一个 ‘age’ 属性
emp1.age = 8 # 修改 ‘age’ 属性
del emp1.age # 删除 ‘age’ 属性

8、访问属性的另外一种途径
getattr(obj, name[, default]) : 访问对象的属性。
hasattr(obj,name) : 检查是否存在一个属性。
setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
delattr(obj, name) : 删除属性。
eg:
hasattr(emp1, ‘age’) # 如果存在 ‘age’ 属性返回 True。
getattr(emp1, ‘age’) # 返回 ‘age’ 属性的值
setattr(emp1, ‘age’, 8) # 添加属性 ‘age’ 值为 8
delattr(emp1, ‘age’) # 删除属性 ‘age’

9、继承
python可以进行多继承
class sample(speaker,student):
调用的时候直接调用即可:
test = sample(“Tim”,25,80,4,“Python”)#用来创建一个sqmple的对象
test.speak() #调用继承自speak的方法

10、方法重写
如果你的父类方法不能满足你的子类需求,那么我们可以重写父类的方法,super()函数是用来调用父类的一个方法。
class Parent: # 定义父类
def myMethod(self):
print (‘调用父类方法’)
class Child(Parent): # 定义子类
def myMethod(self):
print (‘调用子类方法’)

c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法

11、类属性与方法
类的私有属性:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。

类的方法:在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。

类的私有方法:__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。

类的专有方法:
init : 构造函数,在生成对象时调用
del : 析构函数,释放对象时使用
repr : 打印,转换
setitem : 按照索引赋值
getitem: 按照索引获取值
len: 获得长度
cmp: 比较运算
call: 函数调用
add: 加运算
sub: 减运算
mul: 乘运算
truediv: 除运算
mod: 求余运算
pow: 乘方

运算符重载:
Python同样支持运算符重载,我们可以对类的专有方法进行重载。
class Vector:
def init(self, a, b):
self.a = a
self.b = b

def str(self):
return ‘Vector (%d, %d)’ % (self.a, self.b)

def add(self,other):
return Vector(self.a + other.a, self.b + other.b)

v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)

注意:self代表的时候实例而非类,self代表的是当前对象的地址;而self.__class__指向类,self不是python的关键字,我们把他换成其他变量名字也是可以的

三 、CGI编程
1、简介:是一种通用网关接口,就是一段运行在服务器上的程序
CGI结构图:
在这里插入图片描述
2、CGI目录设置
windows上:ScriptAlias /cgi-bin/ /var/www/cgi-bin/
linux上:/var/www
如果你想指定其他运行 CGI 脚本的目录,可以修改 httpd.conf 配置文件

十、python2.x和python3.x的区别
1、print()
2、Unicode编码
3、除法运算://:在3.x中并不是舍弃小数,而是向下取整,和floor是一个作用
如果想正真的截取整数部分的话,应该使用math模块中的trunc()函数
4、异常:在3.x中我们将捕获异常的语法改成了except Exception as ex;
5、在python3.x中我们使用range()代替了xrange()
6、在python3.x中表示八进制字面量的方式改成了0o1000
7、在python3.x中不等于运算符只有一种:!=
8、在python3.x中去除了数据类型:long

十一、IDE
pycharm:优点:专业;缺点:占用内存大;
vdcode:优点:安装插件简单方便,可中文,打开速度快;
缺点:相对pycharm,提示没那么好
atom:安装插件简单方便,不常用
sublime:安装方便,打开速度快,缺点:提示不好,插件安装不人性化
十二、Python JSON
1、简介:JSON是javascript对象符号,是一种轻量级的数字交换格式。它也是一种字符串,只不过它的内部是字典,外部用一对单引号包裹,使用json函数需要导入json函数库
json.dumps(dict):将python对象编码成json字符串
json.loads(json):将已编码的json字符串解码成python对象
2、python类型向json类型转化对照表
在这里插入图片描述
3、json类型转换成python类型
在这里插入图片描述
a=[{“01”:“gfb”,“02”:“hf”}]
encode()函数用于将python对象编码成json字符串:b=demjson.encode(a)
decode()函数用于将json字符串解码成python对象:c=demjson.decode(b)

猜你喜欢

转载自blog.csdn.net/weixin_43797885/article/details/89159688