day07

今天要写的是python中的最重要的思想和内容:面向对象编程和类的三大特性(继承,封装,多态)
面向对象编程:OOP
python这门编程语言本身就是面向对象编程的,这里不得不提到另一种编程思想,面向过程编程,他们之间的区别就是:面向过程的最小单位是函数,面向对象的最小单位是类。
面向对象的思想是把一切事物看成是一个对象,对象就有属于自己的属性和方法。比如:一只黑色的小猫在吃猫粮。这句话里面,我们就可以把这只猫看成一个对象,白色是它的一个属性,吃猫粮是它的一个方法,也可以说是一个行为,是它可以实现的功能。
猫是一个类,这个类其实包含了很多的猫,白的,黑的,黄的,瘦的,胖的,公的,母的等等,有些猫可以跳很高,有些猫只能跳很矮,这就说明,类是包含若干的的对象,但是这些对象除了共有的属性和方法(就像所有的猫都会吃东西,所有的猫都有四条腿),他们也有自己独特的属性和方法(有些跳很高,有些跳不高,有些是白色,有些是黑色)。
先说面向对象编程中的类的语法:

class 类名(继承至哪些类):
	'''类的文档字符串'''
	类属性
	类方法
	实例属性
	实例方法
	静态方法

类中大致就包含这些东西
类的作用:
创建一个或多个对象
描述该类的行为
说明:
类名实质是一个变量,它用来绑定该类
类名必须是标识符

类的三大特性之继承:
类和函数一样,可以继承另外的类,而且可以继承多个类,继承的类叫子类,被继承的类叫父类

class a(obj,b,c,.......):

这就是继承,obj是python编程语言中所有类的父类,注意,是所有类。a除了继承obj类(这是必须的,也可以省略不写,默认也是继承自obj),还继承了b类,c类等等可以有很多类,继承一个叫单继承,继承多个叫多继承,继承之后,a类就拥有obj类的其他所有类拥有的全部属性和方法,也就是说,子类拥有父类所有的属性和方法,你可能会问,万一子类中的属性和方法与父类中的属性和方法同名了咋办?这也是有规定的,如果出现这种情况,那么子类中的属性和方法会覆盖父类中同名的属性和方法,相当于子类中的属性和方法优先,父类的属性和方法也没有消失,任然存在,只是被覆盖了而已
还有一个问题,两个或几个父类的属性和方法重名了, 也就是父类与父类的某些属性的方法重名了,那么子类中使用父类的这些重名的属性和方法,使用哪个?这个python官方给的解释是,都有可能,没有严格的规定,但是经过我的多个使用来看,大概率的现象时,哪个写在前面,有先用哪个的。所有使用的时候需要注意一下这个问题。
还有一个问题,我的子类中的属性和方法不小心把父类中的属性和方法覆盖了,但是,我现在还是想要使用父类中那个被覆盖的方法发,怎么办?开发这门语言的大神们怎么可能这点都想不到,别人为我们提供了一个很神奇的函数:super(),这个方法简直不要太厉害,语法是这样的:

super(子类名,obj).被覆盖的方法名()
如:super(a,obj).fun() --->使用被子类a覆盖的父类中的fun方法

python3.xx之后shuper()括号里面的参数可以全部省略,默认就是调用当前类的父类的制定方法。

类的三大特性之封装:
1.封装是指隐藏类的实现细节,让使用者不用关心这些细节
2.封装的目的是让使用者通过尽可能少的实例变量名(属性名)操作对象
3.python用类和私有属性和私有方法实现封装
这里又出现了一些东西,私有属性和私有方法是什么?
在python的类中,用单下划线命名的函数(方法)我们成为保护方法,这里的保护方法不是程序上的保护,还是可以正常的使用的,但是我们在看到别人写这种方法是时候,自己要知道,别人写的是保护方法,这里的保护没有实际上的作用,只是让人知道是保护方法而已。
在python类中,用双下划线开头,不以双下划线结尾的犯法我们成列私有方法,这种方法就有程序上的功能了,这种方法只能通过类方法进行访问和修改,外部是无法访问和修改的,但是这个说法不严谨,其实还是有办法从外部访问的,我们可以通过:实例名._类名__私有方法名。这种方式可以访问私有方法。
在python类中,用双下划线开头双下划线结尾的方法称为魔法方法,这种方法就厉害了,既然称为魔法方法,肯定有它的神奇之处,后面我们会经常跟它打交道,而且非常有用。

类的三大特性之多态:
顾名思义,就是多种编程状态
编程语言的状态有两种:静态和动态
多态原指在有继承关系的类中,调用基类对象的方法,实际能调用到子类覆盖方法的现象叫多态
python全部的对象都只有’运行时状态(动态)’,没有C++语言里的编译时状态(静态)

明天讲具体是的怎样面向对象编程,提前声明,我也是个菜鸟,菜鸟的面向对象编程很粗浅,只有那些大牛,才是做到真正的一切皆对象。我们这些嘛,早晚也能做到, 要有信心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值