1 继承
子类继承父类的一切属性
如何使用继承
basses 查看继承所有父类
1 新式类 继承object的类及该类的子类都是 广度优先查询
2 经典类 只有py2中存在经典类,py2中不会显示继承任何类,以及该类的子类
py3中所有的类都是新式类
派生
派生方法
import pickle
class bb1():
def init(self,age,fuck):
self.age = age
self.fuck = fuck
def save(self):
with open("./1","wb") as f:
ss = pickle.dumps(self)
print(ss)
class bb2():
def init(self,age,fuck):
self.age = age
self.fuck = fuck
class cc1(bb1):
def init(self,age,fuck,hello):
## 继承bb1的方法 1 直接调用父类的函数进行调用
#bb1.init(self,age,fuck)
## 使用super函数,将自己的类与父类进行绑定
# 1 super(cc1,self).init(age,fuck)
# 2 super().init(age,fuck)
self.hello = hello
继承顺序 查看类的__mro__方法可以查看
cc1.mro
调用super可以得到一个特殊的对象,该对象会按照当前类的mro列表依次查找属性
super按照super算法去找
class f1():
def f1(self):
super().f2()
print("f1")
class f2():
def f2(self):
print("f2")
class f3(f1,f2):
pass
f3().f1()
鸭子方法
当1类有2个函数,如果2类也有相同函数,那么这个类就是1
组合
1 什么是多态
同一种事物的多种形态
封装
1 双下划线开头的属性,会被隐藏起来,类内部可以直接使用,类外部可以直接使用
2 _的方法,或者属性,在类的名称空间中仍然存在,变成了 类名__方法 _foo__n例如
3 只有在类定义时候会进行 隐藏的方法和属性会变名字,其他时候不变
4 当父类需要隐藏自己属性时候,可以使用封装方法
类装饰器
@property 内置函数
将类的方法变成属性
class people:
def init(self,name):
self.__name = name
@property
def name(self):
return self.__name
@name.setter
def name(self,val):
print("enter set")
if type(val) is not str:
raise TypeError("不是字符串格式")
self.__name = val
@name.deleter
def name(self):
print("...")
setter 和 deleter 的函数需要与property的方法名相同
classmethod 类方法
提供额外的实例化方式
class MySQL:
def init(self,host,post):
self.host = host
self.port = port
@classmethod
def from_conf(cls):
return cls(settings.Host,settings.port)
使用类方法, from_conf 等于调用 mysql的__init__
staticmethod 静态方法
不绑定类,及self方法
isinstance(obj,foo)
obj是否foo的实例类型
hasattr
hasattr(people,"x")
getattr
getattr(people,"x")
setattr
setattr(people,"x",111)
delattr
str print的
repr
del 会在对象被删除前自动触发
内置函数
1 abs绝对值
2 all 可迭代对象 all[0,1,2,None] 返回True ALL [] 空时候为true
3 any 只有一个为真,则当前列表为真
4 bin (3) 将十进制转换为 2进制
5 oct(9) 十进制转换8进制
6 hex(17) 十进制转换十六进制
7 callable 判断一个对象是否为可调用
8 complex 负数
9 divmod 取余数 divmod(10,3) 等于(3,1)
10 enumerate(10) 对循环时候既可以取出索引 又可以取出值
11 frozenset() 不可变集合
12 hash 得到hash值
13 ord("a") 将字符串变成ascii
14 char(65) 将ascii变成字符串
15 pow pwo(3,2,3) 10**2%3
16 round round(3,5) 四舍五入
17 slice(1,4,1)
18 vars() 看类的名称空间,等于 .dict
19 zip