Python之面向对象

本章内容:

  1. 类的定义
  2. 类的举例

 

一、类(Class)的定义

         什么是类?我们所理解的类就是分类,形如不同的垃圾就因该放在不同的垃圾箱(当然,在这儿是提倡垃圾分类的哈),再者就比如说地球上的生物,我们又把它们分为了人类,植物类,动物类等等,那么,我们为什么要这样细分呢?话说回来这不就是为了好区分物种嘛!地球辣么大,我们是不可能全部记住的,当然,也包括下辈子。但是经过这样的分类,我们记起来就容易的多了,(虽说没有全部记住,但是可以知道是属于哪一部分),我们Python中也是一样的,听老师说过,Python是面向对象的语言,C语言是面向过程的语言,既然是Python面向对象的,(这个对象指的是一种封装的概念,可不是你们的女朋友吆),那么这个所谓的“对象”就因该有一些特征,动作啊等等,再比如说,我没有见过电脑,有一次老师拿着一个能够上网的盒子说这是电脑,结果过了几天,你又说地下跑的四条腿的东西是电脑,我当然会说这不可能是电脑,因为它与我脑海中所匹配到的关于电脑的信息是不符合的。当然,我是把关于电脑的特征记在了大脑中(类似于将所有关于电脑的信息封装成了块)。所以,在Python中也是一样的,它把事物封装成一个类(class),提供一个类的接口供我们使用,换句话说就是:用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法,对象是类的实例。我们前面说到:Python是完全面向对象的,所以,你可以自己定义类。

         类是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作。

         在面向对象的程序设计中,类是程序的基本单元。

         1、类的语法格式:

 

class  name(object):

                   <statement-1>

                   .

                   .

                   .

                   <statement-n>

           将类实例化后,可以使用里面创建的属性,注意:在创建一个类后,可以通过类名访问其属性。

 

注意事项:

  1. 中引文符号问题(不应该出现的错误)
  2. 变量和类的命名规范问题(不应该出现的错误)
  3. PEP8规范
  4. 缩进问题(最重要)

 

2、类对

类对象它是支持两种操作:属性引用和实例化

属性引用使用和Python中所有的属性引用一样的标准语法:object.name。

举例:

定义一个Dog类

3、self代表类的实例,而非类

         类的方法与普通函数只有一个特别的区别:它们必须有一个额外的第一个参数名称,一般它的名称是self。

4、类的方法

         (类中的动作)

         在类的内部,使用def关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self,并且作为第一个参数,self代表的实例。

运行结果:

5、Python三种封装的写法

<1>、常规写法:

         将属性私有。格式: ._ _属性名称

<2>、调用全局函数property,将set和get传递过去

         对象,属性名称

<3>、使用annotation(注解),proprietary来进行二次封装,(注意:此处存在一个伪重载)

<4>、函数的重载(overload)(面试常用)

         函数名称相同,参数的个数或类型不同

         注意:在Python中没有函数重载(但是可以用装饰器来实现),因为Python是弱数据类型语言。

         上边的图片里看似像函数的重载,但实际不是函数的重载,因为头部有装饰器,所以,里面的函数名称是否重复已经变得不那么重要了(Python中如果要实现重载,则需要装饰器,代码运行时先运行装饰器。)

<5>函数的重写(override)

         说的是面向对象的继承中,子类继承了父类的方法,但是不满足子类的需求,重新覆盖父类的方法的现象(在子类重写父类的方法)。

<6>、继承(extend):(Python中允许多继承)

         ._ _  #类似于Java private表示除了类本身,其他的都不能访问。

         ._      #类似于Java protect 表示除了本身,子类也允许访问。

<7>、多态(用来节约代码)

         父类引用指向子类实例的现象,叫做多态(必须要有继承,类似于一个对象有多重状态吧)

         多态可以增加代码的灵活度

         以继承和重写父类方法为前提

         注意:Python是弱数据语言,而弱数据类型语言天生支持多态

例如:

运行结果:

理解多态:就比如说,张三可以说话,可以奔跑就属于多态。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值