python 笔记8

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

posted @ 2018-05-26 22:20  你猜不出我密码  阅读(118)  评论(0编辑  收藏  举报