python进阶(1)
1.继承 2.重写 3.类方法 4.静态方法 5.多态 6.类属性 与 实力属性 7.__new__方法 8.try异常捕捉 9.raise抛出自定义异常 10.模块 11.模块的制作与上传
上面的是我写的内容的一些简介,下面后详细的讲到的^_^*
1. 继承:
多继承的时候,子类后面的父类名应该在括号中用,隔开
父类中的初始化带参数,所以子类即使没有初始化,选择继承父类之后也要带上对应的参数。
1.继承:
多继承的时候,子类后面的父类名应该在括号中用,隔开
父类中的初始化带参数,所以子类即使没有初始化,选择继承父类之后也要带上对应的参数
__mro__的方法是:写出顺序 (类名.__mro__)2.重写:
当子类的方法名与父类的方法名相同时,就是对父类对应方法的重写
有三种方法:
(1)父类名.__init__(self.name)
括号中的方法名前面必须有self: Cat.__init__(self.name)
(2) super(子类名,self).__init__(name) super(子类名,self).子类的方法名( )
(3) super().__init__(name) super().父类名(父类属性) super中不用self
3. 类方法
(1.)def方法名( cls ) 每一个类方法上面必须有@classmethod,这是类方法的一个标志
在一个类中,使用cls.类属性名可以直接修改在文件中的类属性,而实例化的方法都不能直接修改类的属性
(2.)当实例化对象修改类属性时,只有本人的被修改了,其他的不变
(3.) 删除对象的指定属性:del people01. guoji del对象名.方法名
4.静态方法:
定义函数函数名():不可以传入self或者是cls等参数,但是可以传入其他的参数:
调用时一般要用类名,否则容易出错
既不需要访问实例属性或者调用实例方法
也不需要访问类属性或者调用类方法
静态方法不能调用非静态的方法
5.多态
面向对象的三大特点是:封装,继承,多态
多态:可以增加代码的灵活度,不影响到类的内部设计
6.类属性 与 实例属性:
总结:
如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。
实例对象能调用实例方法、静态方法、类方法和类属性,实例属性。
而类除了不能调用实例属性,其他的方法和属性都能调用。
7.__new__方法:
(*1.) __new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
(*2.)__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例
(*3.)__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
(*4.)我们可以将类比作制造商,__new__方法就是前期的原材料购买环节,__init__方法就是在有原材料的基础上,加工,初始化商品环节
如果return返回了__new__(cls),就相当于从父类的方法中调用了__new__的方法,也就是我们在创建这个类的操作(我们创建类的时候不也是在内存中开辟了一块地方吗,其实object或者是 父类里面也有__new__这个方法,就是当我们创建一个类的时候就会自动的调用的),所以要直接调用实现这个实例化,让它再下来。 <<<<<<<<<自己理解的
在后面的单例模式中会用到:向上面说的一样,在你多次创建对象时,他还是只会保留第一次创建的。
8.异常捕捉:
Except后面可以跟你要捕捉的错误类型 如:IOError,TypeError,等等都可以,但是,一旦你不知道你要捕捉的错误是什么,要怎么办呢,所以有一个Exception的存在,它代表了所有的错误。如下图:
捕捉异常try的嵌套:
Try的志向循序: 从上到下执行,如果发生错误了try出了错误,后面的语句后面的语句就不会执行了,走到了错误输出的地方。
try不影响后面的语句,finally后面的语句不管是否try出错误都会执行。当你执行ctrl+c退出时依然会try出异常
9.raise抛出自定义异常:
你可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类
异常处理中抛出异常:
10.模块:
导入模块,例如import os, import sys,
模块的导入方式:1.import模块名 2.from ...import ...
Import导入的时候如果下面要使用时 需要用 模块名.函数名
而from ...import ...导入使用后,只需要调用函数名即可。自己写的模块导入时,一般要用from ...import ...这一种方式导入的受路径的限制小一点,当你的文件移动时,依然可以执行。
11.模块的制作和上传:
1.
2.
3.
4.
模块的安装和使用: