只要跟对象有关系的前面就要加self,面向对象操作的时候
操作系统,环境,开发软件?
函数式开发和面向对象的开发的区别: 函数式开发在每次调用的时候都需要给参数传参, 而面向对象的开发,可以把函数定义在类型里面叫做方法,只需要在创建对象的时候传一次参就可以了, 之后可以直接调用类型中的方法
面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条 流水线,考虑周全什么时候处理什么东西。 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。
在python 中面向对象的程序设计并不是全部。 面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可 以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。
如果父类的属性子类用不完怎么办? 一般没有这种情况,写类型之前要先分析,分析出来一个类型定义一些公共的属性为父类, 然后其他的类在父类的基础上如果需要添加属性再添加 理论都是在实践之后得出来的,所以要想明白就多练
多继承就是可以继承多个类型,用于解决一个对象有多个角色
查看文件的命令 import os os.listdir("f:")
命令行用的是gbk编码
继承中,在子类方法之中加super().父类中的方法名,子类方法执行完之后就会执行父类的方法
********************************** 1) 继承的语法结构 继承的语法结构: class 类型(要继承的类型): pass
当前类型:子类 要继承的类型:父类 子类继承父类
python中:类型的后面可以不添加括号[默认继承了object类型] class Pet: == class Pet(object): == class Pet():
python中查看自己到底继承了哪些父类: 用魔法属性:类型名._ _base_ _ 查看当前类型继承的父类 S._ _base__ <class '__main__.Person'>
怎么查看对象的当前类型: 通过类型的_ _class_ _魔法属性,直接查看,和type(类型名称)效果一致! 对象名._ _class_ _ == type(对象)--> 得到当前对象的所属类型 s._ _class_ _ <class '__main__.Person'>
怎么查看当前类型的所有子类: 通过类型的父类名._ _subclasses_ _()这个魔法函数,直接以列表的形式查看当前类型的所有子类 Person._ _subclasses_ _() [<class '__main__.Student'>, <class '__main__.S'>]
(2) 继承的意义 >> 子类中可以编写父类中没有的属性和方法 实现功能的扩展!
>> 子类中可以重写父类中已经在的方法【方法重写】 执行该方法的过程中,如果子类没有重写该方法,执行父类的方法 如果子类重写了该方法,直接执行子类的方法,方法名相同。
>> > 方法重载:[python没有方法重载]在一个类型中,出现了两个或者两个以上 相同名称的方法[参数不同],根据传递不同的参数执行不同的方法! 由于python弱类型语言的特性,已经在方法中具备了这样的功能 python中没有方法重载 非要给python添加一个方法重载的概念的话:@property--@method.setter
********************************
如果继承了父类之后,子类需要添加自己的属性的话,需要把父类的属性先传递给子类,传递方法 有两种,具体代码如下,在父类的基础上添加了age属性: class Zhishen(God): def __init__(self, name, age): #调用父类初始化函数~初始化父类数据 # God.__init__(self, name) # 类型调用 #这两种方法效果一样 super(Zhishen, self).__init__(name) # 对象调用
************************************** 多继承,一个类继承多个父类,【多继承-广度优先 VS 深度优先】,检索是深度优先: python的多继承:体现的是 生活中 一个对象 会有多个角色的概念
如果一个类型继承了多个类,这个类型里面是pass,调用这个类型中的一个方法的时候,会先 寻找继承的第一个父类中有没有这个方法,如果有的话就直接调用第一个父类中的那个方法, 如果继承的第一个父类中没有那个那个方法的话就寻找第二个父类,这样依次寻找,先深度再广度。 lass A(): def __init__(self): self.value = "类型AAAAAAAAAAA的value值" def show(self): print("类型aaaaaaaaaaaa中的show执行了")
class B(A): pass
class C(): def __init__(self): self.value = "类型CCCCCCCCC中的value值" def show(self): print("类型ccccccccccccc中的show执行了") class X(B, C): pass
x = X() x.show() >>>>类型aaaaaaaaaaaa中的show执行了