鱼c心得3
来源:互联网 发布:云计算对教育的影响 编辑:程序博客网 时间:2024/05/16 08:15
123 30章os模块介绍,模块就是找各种函数的打包
绝对路径是真实路径 ,相对路径是从现在的位置走过去的路径
import pickle 泡菜 二进制保存 把大量的数据保存成二进制文件放在本地,减少运行文件大小
my_list=[123,456,789,'鱼c']
pickle_file=open('my_list,pkl','wb')
pickle.dump(my_list,pocikle_file)
pickle_file.close()
————————————
通过load 读出来二进制文件
pickle_file=open('my_list.pkl','rb')
my_list2=pickle.load(pickle_file)
print(my_list2)
—————————
33 异常处理 鱼c论坛里有各种异常类型的总结
try:
............. 检测范围 如果在范围内有多个错误 只输出一个错误,然后接着运行下面的主程序
except OSError as reason:
print('文件出错了T_T\n错误的原因是:'+str(reason)')
except TypeError as reason:
也可以except 不接类型 就是任何类型 但是会被ctel+c 中断 所以不推荐这种方式
——————————
raise 造异常
raise ZeroDivisionError 造除数为零的异常
_________________________________________________________
36类和对象
数据的封装是列表
带包打包成方法也是语句封装
模拟真实世界把数据和代码封装在一起就是对象
对象的静态也正是属性,对象的动态特征是方法
继承 class MyList(list): 类首字母大写,方法是首字母小写
pass
list2=Mylist() 这就继承了list的所有方法了
多态即多种形态,在运行时确定其状态,在编译阶段无法确定其类型,这就是多态
不同对象,对同一方法响应不同的行动。
同一种方法,不同的对象有不同的响应。 pythion 的变量不确定类型,就是一种多态
37 类 self 相当于this
构造函数, def __init__(self,name) 左右下划线
class Person:
__name='神雕大侠' 前双下划线 编程私有变量
def getName(self): 通过方法变相访问私有变量
return self.__name
p.Person()
p. getName() >>>神雕大侠
p._Person__name 是可以直接访问私有变量的
Pathion 的私有变量是假的,是可以通过这个方法访问的
class Person() :
def name(self):
print('我是神雕大侠')
class Child(Person):
def name(self):
print('我是小龙女')
这中方法可以实现 子类覆盖父类的方法,父类不受影响
——————————————————————
子类构造问题
子类增加构造方法的时候,会自动覆盖掉父类的构造,这样就继承不了父类的构造属性了
可以通过两种方法子类新构造1 调用未绑定父类方法 在子类中添加 父类名__init__(self)
2 使用super函数 super__init__(self) 就会自动添加父类的构造方法进去
____________________________________
类的组合,用一个新类把同类型的类和在一起。 继承是纵向的,上下级
class Turle:
def __init__(self,x):
self.num=x
class Fish:
def __init__(self,x):
self.num=x
class Pool: 在构造的时候实例化要归在一起的类
def __init__(self,x,y):
self.turle=Turle(x)
self.fish=Fish(y)
def print_num(self):
print("水池里有乌龟%d 鱼%d" % (self.turle.num,self.fish.num) )
——————max--in 是一种编程方法 值得学习的
类,类对象,实例化对象
class CC :
num=0
a=CC()
b=CC()
c=CC()
>>> a.num
0
>>> b.num
0
>>> c.num
0
>>> c.num+=10
>>> c.num
10
>>> CC.num
0
>>> CC.num+=100
>>> CC.num
100
>>> a.num 类对象的静态属性被更改了,实例化的个体也会受影响会改变
100
>>> b.num
100
>>> c.num 唯独这个c实例没有被改变,当重新赋值的时候就相当于覆盖掉了类对象的静态属性
10
self 详细解释
首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的。self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以,但是约定成俗,不要搞另类,大家会不明白的。
self指的是类的实例本身,类中方法必须带self
多态即多种形态,在运行时确定其状态,在编译阶段无法确定其类型,这就是多态
当属性的名字和类的相同会覆盖方法,属性名多用静态词,方法多用动态
pY规定方法只有实例才能被调用
类对象中的属性和方法都是静态实例,即使类的名称被删除,实例也能调用
调用的时候虽然不用带self 但是会自动加入一个self c=C() c.x(self,x,y) 这个self是被隐藏看不到的
41类的一些方法
issubclass(class,classinfo) 判断是否是子类 是返回true
子类,父类 或者本身object 都会返回true
isinstance(object,classinfo) 判断是否是实例
hasattr(object,name) 判断目标是否有这个属性 has(c1,'x') 属性要加上双引号
getattr(c1,'y','访问的属性不存在') 获得这个属性的值,如果没有,返回提示
setattr(c1,'y',值) 设置该变量的值
delattr(c1,'y') 删除属性
————————————
class c:
def __init__(self,size=0):
self.size=size
def getsize(self):
return self.size
def setsize(self,value):
self.size=value
def delsize(self):
del self.size
x=property(getsize,setsize,delsize) 一种高级的属性 便于后来的修改
3个方法 (获得,设置,删除)
>>> c1=c()
>>> c1.getsize()
0
>>> c1.x
0
>>> c1.x=10
>>> c1.x
10
>>> del c1.x
- 鱼c心得3
- .c心得
- 重读《Essential C++》心得
- 《学习C语言心得》
- C/C++编程心得
- C语言编程心得
- c 读书心得
- c语言心得
- C语言的心得
- C语言心得
- C语言的心得
- UltraWinGrid使用心得(C#)
- C语言心得
- C语言读书心得
- 编辑C程序心得
- C语言编译心得
- C语言心得!
- c语言心得
- 【LibUIDK界面库系列文章】设置Edit控件的Margin
- java extend 和 implements 的区别
- 51nod 1056 最长等差数列 V2
- 完美的WebView UI
- C++实验19
- 鱼c心得3
- Java泛型之<? extends T>和<? super T>
- 论文阅读笔记(三)细粒度图像检索
- Database System Implementation ch2
- 常用mysql命令大全
- Why should I not use equals with inheritance?
- Cyberlink YouCam Deluxe 4(聊天摄像头特效软件)官方中文豪华版V4.0.0820下载 | 含youcam4.0序列号
- Android studio 2.3关联源码
- 【LibUIDK界面库系列文章】打开和保存文件对话框