Python学习第五天 | 类,面向对象编程,封装,私有方法,继承

一,概述

1,类的设计:
在程序开发中,要设计一个类,通常需要满足以下三个要求:
类名 这类事物的名字,满足大驼峰命名法
属性 这类事物具有什么样的特征
方法 这类事物具有什么样的行为

2,面向对象的三大特性
    封装:根据职责将属性和方法封装到一个抽象的类中
    继承:实现代码的重用,相同的代码不需要重复的写
    多态:不同的对象调用相同的方法,产生不同的结果,增加代码的灵活性

3,面向对象的基础语法:
定义简单的类:
定义只包含方法的类:
class 类名:
    def 方法1(self,参数列表):
        pass
    def 方法2(self,参数列表):
        pass

当一个类定义完成之后,要使用这个类来创建对象,语法格式如下:
对象变量  = 类名()

4,示例

注意:在日常开发中,不推荐在类的外部给对象增加属性,如果在运行时,没有找到属性,程序会报错

二,常用的内置方法

1,,初始化方法
当使用类名()创建对象时,python的解释器会自动执行以下操作:
       1,为对象在内存中分配空间--创建对象
    2,调用初始化方法为对象的属性设置初始值--初始化方法(__init__),__init__是对象的内置方法,专门用来定义一个类具有哪些属性的方法

示例

定义方法时,写入形参,使其可以传递参数

2,__del__方法

在python中
当使用类名()创建对象时,为对象分配完空间后,自动调用__init__方法
当一个对象被从内存中销毁前,会自动调用__del__方法

示例

注意:之前学数据结构中的del也可以用来删除

3,__str___

在python中,使用python输出对象变量
默认情况下,会输出这个变量引用(地址)的对象是由哪一个类创建的对象,以及在内存中的地址(十六进制)

如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以使用__str__这个内置方法

示例

三,封装

封装
1,封装时面向对象编程的一大特点
2,面向对象编程的第一步 将属性和方法封装到一个抽象的类中
3,外界使用类创建对象,然后让对象调用方法
4,对象方法的细节都被封装在类的内部

示例1

示例2

需求
1,房子有户型,总面积和家具名称列表
    新房子没有任何的家具
2,家具有名字和占地面积,其中
    床:占4平米
    衣柜:占2平米
    餐桌:占1.5平米
3,将以上三件家具添加到房子中
4,打印房子时,要求输出:户型,总面积,剩余面积,家具名称列表


小结:
    1,创建一个家类,使用__init__和__str__两个内置的方法
    2,准备了一个add_item的方法,准备添加家具
    3,使用 房子类 创建一个房子对象
    4,让房子对象调用三次add_item方法,将三件家具以实参的形式传递到add_item

 

示例3

需求
1,士兵瑞恩有一把AK47
2,士兵可以开火(士兵开火扣动的是扳机)
3,枪能够发射子弹(把子弹发射出去)
4,枪能够装填子弹 --增加子弹的数量

四,私有属性和私有方法
应用场景
    在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到
    私有属性 就是 对象 不希望公开的属性
    私有方法 就是 方法 不希望公开的方法
定义方式
    在定义属性或方法时,在属性名或者方法名前添加两个下划线,定义的就是私有属性或方法

示例1

示例2

如何在子类中访问父类的私有属性或私有方法?
在父类中创建一个共有方法,写入私有属性和私有方法

五,继承

子类继承自父类,可以直接享受父类中已经找到封装好的方法
子类中应该根据自己年的职责,封装子类特有的属性和方法
单继承
1,继承的概念 语法和特点
继承的概念:子类拥有父类的所有方法和属性(子类只需封装自己特有的方法和属性)
2,继承的语法
class 类名(父类)
  def 子类特有的方法

示例

继承的传递性:(爷爷 父亲 儿子)
1,C类从B类继承,B类又从A类继承
2,那么C类就具有B类和A类的所有的属性和方法
子类拥有父类以及父类的父类中封装的所有的属性和方法

示例

继承的重写

重写父类方法有两种情况:
1,覆盖父类的方法
2,对父类方法进行扩展

1,覆盖父类的方法
如果在开发中,父类的方法的实现和子类方法的实现完全不同,就可以使用覆盖的方式
在子类中重新编写父类的方法
具体实现方式,就像相当于在子类中定义了一个和父类同名的方法并且实现重写之后,

在运行时,只会调用子类的重写方法,
而不会调用父类封装的方法

示例

2,对父类方法进行扩展

注意:扩展是需要调用原来的方法!!!

3,继承中__Iinit__方法特别注意

多继承

子类拥有一个父类叫单继承
子类可以拥有多个父类,并且具有所有父类的属性和方法
例如:孩子会继承自己父亲和母亲的特性

语法:
class 子类名(父类名1,父类名2...)
    pass

示例

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值