语法:
isinstance
格式:isinstance(对象,类)
检测一个对象是否是某个类的实例,或者是其子类的实例
issubclass
格式:issubclass(被检测类,父类)
检测一个类是否是另外一个类的子类
__class__:
特殊属性,作用:可以获取某个对象所属的类
hasattr(obj,name)
判断是对象obj中是否有名字为name的属性,有则Ture,没有则False
格式:hasattr(对象,‘属性名’)
getattr(obj,name)
获取对象obj中,属性名为name的值,这个值有可能是方法
delattr
删除某个对象的属性
格式:delattr(对象,‘属性名’)
setattr
为某个对象的某个属性设置值
格式:setattr(对象,‘属性名’)
生成器生成数据:
next(g)
g.__next__()
g.send(argv)
__hash__
hash()函数
hash表存储数据原理:
1,计算哈希值,决定hash表中存储的位置
2,与当前位置其他对象去比较,如果相等,则不存储,不等,才存储进来
按指定的内容去比较
def__eq__(self,other):
return self.id=other.id
多继承
class 子类(父类1,父类2...)
pass
多继承条件下的方法继承问题:
1,一个类可以继承多个父类,子类可以继承父类中所有非私有方法
2,如果子类中有方法与父类中的方法同名,优先使用子类中的方法
3,如果多个父类中存在同名方法,则调用的方法,取决于继承顺序
多继承属性问题:
类属性:
如果多个父类中存在同名属性,子类使用的取决于继承顺序
如果子类中有方法与父类中的方法同名属性,以子类为准
面向对象特征:
1,封装
类的封装
属性(成员变量)
动态条件属性:
对象名.属性名=value
访问属性:
对象名.属性名
为类模板添加属性:
__init__(self)方法
创建对象时会被调用
每创建一个对象都会被调用一次
行为(成员函数<方法>)
继承:
class类名(父类)
pass
class 类名(object)
pass
继承的作用:
子类可以访问父类中所有的属性,方法
继承的好处:
减少重复代码(减少代码冗余度)
易拓展,易维护
如果一个类没有明确指明父类是谁,则默认父类是object
class类名(父类)
pass
__init__()
调用父类的方法
super()
super(类名,对象).父类(方法)
方法(覆写,复写):
父类中有这个方法,子类将该重新实现了一遍
什么场景下需要复写?
如果父类中的方法不能满足子类的需求,实现方法复写
属性复写:
类属性
定义位置:类内,方法外
子类中如果重新定义了该属性,以子类的为准,如果没有,则使用继承的父类的
自定义对象的比较:
is:
比较两个对象是否为同一个
==:
本质调用__eq__
用来比较两个对象内容是否一致
运算符重载问题:
== -> __eq__
> -> __gt__
+ -> __add__
魔法方法:、
__new__:
创建对象时,分配内存的时候会被自动触发
__del__
当对象要被系统回收时,会被触发
__call__
一个对象被当成方法调用时,会自动执行
__repr__
用法类似__str__,是__str__的备胎
判断字符串常用方法
变形
upper 转大写
lower 转小写
swpcase 大小写互换
title 单词首字母大写
capitalize 首字母大写
判断
starswith 以什么开头
endwith 以什么结尾
isdigit 判断字符串是否由纯数字组成
islower 判断字符串是否为纯小写
isupper 判断字符串是否为纯大写
isalpha 判断字符串是否为纯字母,至少得有一个
isalnum 判断字符串是否由字母或者数字组成,至少得有一个
查找:
find
rfind
index
rindex
count
替换
replace
推导式:
变量名=[表达式 for 变量 in 列表]
或者变量名=[表达式 for 变量 in 列表 if 条件]
或者变量名=[表达式 for 变量 in 列表 for in]
语义:遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。
字典推导式:变量名={表达式(键值对) for ...}
d={chr(i):i for i in range(65,65+26)}
print(d)
运行后:A:65,B:66...
d1={v:k for k,v in d,items()}
print(d1)
这样就实现类键值翻转
使用匿名函数封装 lambda a,b:a+b
命名空间:
分类:
内置的命名空间
全局的命名空间 globals()
局部的命名空间 locals()
系统加载顺序:
内置->全局->局部
调用时搜索顺序:
局部->全局->内置
作用域:
LEGB:
L:
局部-
E:
闭包
G:
全局-
B:
内置-
常用模块:
random()产生大于0且小于1之间的小数
uniform(a,b)产生指定范围内的随机小数
randint(a,b) 产生a,b范围内的整数包括开头和结尾
random,choice(lst)随机返回序列中的一个数据
random.shuffle()随机打乱列表顺序
random.sample(list,n)返回一个从list中随机取n个非重复元素的新列表
sys
sys.getsizeof()获取目标占用内存大小
sys.version获取python版本
sys.exit接收python解释器
sys.exec_prefix python安装路径
sys.argv外部传进来的参数
sys.path引入模块时,搜索的路径,先搜索当前路径,后搜索系统路径
时间模块
时间戳
1970.1.1 0:0:0 计算机记录
time.time()
2,字符串时间
time.asctime()
ret=time.strftime('%Y-%m-%d %H:%M:%S')
3,元组时间(用来操作时间的)
time.localtime()
格式转换
1,时间戳转元组时间
ts=time.time()
ret=time.localtime(ts)
print(ret)
2,时间元组转时间戳
ts=time.localtime()
ret=time.mktime(ts)
print(ret)
3,时间元组转字符串时间
ret=time.strtime("%Y-%m-%d,time.localtime())
print(ret)
4,字符串转时间元组
print(time.strptime('2018-08-08','%Y-%m-%d'))